0

Цель состоит в том, чтобы развернуть несколько экземпляров, которые могут быть достигнуты с помощью count, но я предоставляю определенный диапазон частных IP-адресов и хочу назначить их экземплярам.Как развернуть несколько экземпляров aws и назначить заданный диапазон IP-адресов с помощью ansible?

Ниже мой нынешний сборник пьес,

--- 
    - 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: t2.micro 
     security_group: default # Change the security group name here 
     image: ami-a9d276c9 # Change the AMI, from which you want to launch the server 
     region: us-west-2 # Change the Region 
     keypair: ansible # Change the keypair name 
     ip_addresses: 
     - 172.31.1.117/32 
     - 172.31.1.118/32 
     count: 2 

    tasks: 

     - 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}} 
         vpc_subnet_id=subnet-xxxxxxx 
#      private_ip={{private_ip}} 
     with_items: ip_addresses 
     register: ec2 

     - 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: ansible 

     - name: Update system 
     apt: update_cache=yes 

     - name: Install Git 
     apt: 
      name: git 
      state: present 

     - name: Install Python2.7 
     apt: 
      name: python=2.7 
      state: present 

     - name: Install Java 
     apt: 
      name: openjdk-8-jdk 
      state: present 

Который хотя воспитывающих экземпляров, но не назначая IP-адреса, предназначенные для назначения. и я получаю следующее предупреждение.

PLAY [Provision an EC2 Instance] *********************************************** 

TASK [Launch the new EC2 Instance] ********************************************* 
changed: [localhost -> localhost] => (item=172.31.1.117/32) 
changed: [localhost -> localhost] => (item=172.31.1.118/32) 
[DEPRECATION WARNING]: Skipping task due to undefined attribute, in the future this will be a fatal error.. This feature will be removed in a future release. Deprecation warnings can be 
disabled by setting deprecation_warnings=False in ansible.cfg. 

Пожалуйста, предложите мне наилучший способ достижения этого.

ответ

0
  • Вы даете count=2, поэтому 2 экземпляра будет запущен
  • Ваш IP-адреса неправильно, вы даете CIDR вместо IP
  • Вы не используете IP-адрес в любом месте вашего кода при запуске экземпляры

Как исправить?

ip_addresses: 
    - 172.31.1.117 
    - 172.31.1.118 
  • Не указывайте count в ec2 модуле
  • Loop по списку IPaddresses (есть 2 из них)
  • Убедитесь, что вы используете IP с помощью ссылки {item}

НЕТ:

private_ip={{item}} 

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

  • Нет связанных вопросов^_^