2015-01-12 2 views
3

У меня есть сценарии для создания инфраструктуры на существующих экземплярах сервера. Мои файлы инвентаризации определяют все хосты, а проигрыватели работают с экземплярами в моем файле инвентаря.Как структурировать скрипт для создания экземпляров или не создавать экземпляры

Мой вопрос: какова наилучшая практика для создания новых экземпляров? должен ли он включаться в сценарии, которые настраивают среду или разделяют? Я немного смущен тем, как сценарий может создавать экземпляры (например, экземпляры EC2) и принимать файлы инвентаря.

+0

Вы читаете http://docs.ansible.com/guide_aws.html и http://docs.ansible.com/intro_dynamic_inventory.html? Если да, объясните, почему эти статьи не затрагивают ваш вопрос. – Mxx

+0

@Mxx я не видел эту статью, и это интересно. то, что я на самом деле пытаюсь понять, - это когда я настраиваю свою инфраструктуру с помощью плейбуков, лучше всего настраивать серверы и иметь другую playbook для создания новых экземпляров сервера. Я не уверен в лучшей практике, и это то, что я действительно надеюсь, что кто-то проливает свет. – user3329500

+0

Все зависит от вашего конкретного случая использования, потребностей, набора навыков. Это очень личное предпочтение. Можно сказать, что идеальное видение - это единственная коллекция игровых автоматов, которая делает абсолютно все, от воспитания серверов до развертывания кода. Другим может быть совершенно нормально иметь отдельные игровые книги для обеспечения, настройки и развертывания. Но есть также http://docs.ansible.com/playbooks_best_practices.html – Mxx

ответ

1

Возможно, вам понравится эта примерная книжка, она создаст для вас экземпляр (ы), а затем запустит задачи/роли в этих созданных экземплярах все в одном, он также добавит ip вновь созданных экземпляров в хост-файл (предположим, он находится в том же каталоге, откуда вы работаете этот сборник пьес):

--- 
    - name: Provision an EC2 Instance 
    hosts: local 
    connection: local 
    gather_facts: False 
    tags: provisioning 
    # Necessary Variables for creating/provisioning the EC2 Instance 
    vars: 
     instance_type: t1.micro 
     security_group: test-sg 
     image: ami-98aa1cf0 
     region: us-east-1 
     keypair: ansible 
     count: 1 

    # Task that will be used to Launch/Create an EC2 Instance 
    tasks: 

     - name: Create a security group 
     local_action: 
      module: ec2_group 
      name: "{{ security_group }}" 
      description: Security Group for Servers 
      region: "{{ region }}" 
      rules: 
      - proto: tcp 
       type: ssh 
       from_port: 22 
       to_port: 22 
       cidr_ip: 0.0.0.0/0 
      - proto: tcp 
       from_port: 6800 
       to_port: 6800 
       cidr_ip: 0.0.0.0/0 
      rules_egress: 
      - proto: all 
       type: all 
       cidr_ip: 0.0.0.0/0 


     - name: Launch the new EC2 Instance 
     local_action: ec2 
         group={{ security_group }} 
         instance_type={{ instance_type}} 
         image={{ image }} 
         wait=true 
         region={{ region }} 
         keypair={{ keypair }} 
         count={{count}} 
     register: ec2 

     - name: Add the newly created EC2 instance(s) to the local host group 
     local_action: lineinfile 
         dest="./hosts" 
         regexp={{ item.public_ip }} 
         insertafter="[ec2server]" line={{ item.public_ip }} 
     with_items: ec2.instances 


     - name: Wait for SSH to come up 
     local_action: wait_for 
         host={{ item.public_ip }} 
         port=22 
         state=started 
     with_items: ec2.instances 

     - name: Add tag to Instance(s) 
     local_action: ec2_tag resource={{ item.id }} region={{ region }} state=present 
     with_items: ec2.instances 
     args: 
      tags: 
      Name: test 

     - name: SSH to the EC2 Instance(s) 
     add_host: hostname={{ item.public_ip }} groupname=ec2server 
     with_items: ec2.instances 

    - name: Install these things on Newly created EC2 Instance(s) 
    hosts: ec2server 
    sudo: True 
    remote_user: ubuntu 
    gather_facts: True 
    # Run these tasks 
    tasks: 
     - include: tasks/upgrade.yml 

И ваш хост файл будет выглядеть следующим образом:

[local] 
localhost 

[ec2server] 

Надежда, это поможет вам , Спасибо

Смежные вопросы