Ansible:置备新分配的ec2实例

布赖恩·布鲁格曼

这本剧本似乎正在SSH传输到我的本地计算机,而不是远程计算机上。根据我在底部包含的输出来猜测这种情况。

我已经从此处改编了示例:http : //docs.ansible.com/ansible/guide_aws.html#provisioning

该剧本分为两个剧本:

  1. 创建EC2实例并
  2. EC2实例的配置

注意:要运行此代码,您需要创建一个与项目名称相同的密钥对(您可以在此处获取更多信息:https : //us-west-2.console.aws.amazon.com/ec2/ v2 / home?region = us-west-2#KeyPairs:sort = keyName

该剧本列在下面:

# Create instance
- hosts: 127.0.0.1
  connection: local
  gather_facts: false
  vars:
    project_name: my-test
  tasks:
    - name: Get the current username
      local_action: command whoami
      register: username_on_the_host

    - name: Capture current instances
      ec2_remote_facts:
        region: "us-west-2"
      register: ec2_instances

    - name: Create instance
      ec2:
        region: "us-west-2"
        zone: "us-west-2c"
        keypair: "{{ project_name }}"
        group:
          - "SSH only"
        instance_type: "t2.nano"
        image: "ami-59799439"  # debian:jessie amd64 hvm on us-west 2
        count_tag: "{{ project_name }}-{{ username_on_the_host.stdout }}-test"
        exact_count: 1
        wait: yes
        instance_tags:
          Name: "{{ project_name }}-{{ username_on_the_host.stdout }}-test"
          "{{ project_name }}-{{ username_on_the_host.stdout }}-test": simple_ec2
          Creator: "{{ username_on_the_host.stdout }}"
      register: ec2_info

    - name: Wait for instances to listen on port 22
      wait_for:
        state: started
        host: "{{ item.public_dns_name }}"
        port: 22
      with_items: "{{ ec2_info.instances }}"
      when: ec2_info|changed

    - name: Add new instance to launched group
      add_host:
        hostname: "{{ item.public_dns_name }}"
        groupname: launched
      with_items: "{{ ec2_info.instances }}"
      when: ec2_info|changed

    - name: Get ec2_info information
      debug:
        msg: "{{ ec2_info }}"

# Configure and install all we need
- hosts: launched
  remote_user: admin
  gather_facts: true
  tasks:
    - name: Display all variables/facts known for a host
      debug:
        var: hostvars[inventory_hostname]

    - name: List hosts
      debug: msg="groups={{groups}}"

    - name: Get current user
      command: whoami

    - name: Prepare system
      become: yes
      become_method: sudo
      apt: "name={{item}} state=latest"
      with_items:
        - software-properties-common
        - python-software-properties
        - devscripts
        - build-essential
        - libffi-dev
        - libssl-dev
        - vim

我的输出是:

TASK [Get current user] ********************************************************
changed: [ec2-35-167-142-43.us-west-2.compute.amazonaws.com] => {"changed": true, "cmd": ["whoami"], "delta": "0:00:00.006532", "end": "2017-01-09 14:53:55.806000", "rc": 0, "start": "2017-01-09 14:53:55.799468", "stderr": "", "stdout": "brianbruggeman", "stdout_lines": ["brianbruggeman"], "warnings": []}

TASK [Prepare system] **********************************************************
failed: [ec2-35-167-142-43.us-west-2.compute.amazonaws.com] (item=['software-properties-common', 'python-software-properties', 'devscripts', 'build-essential', 'libffi-dev', 'libssl-dev', 'vim']) => {"failed": true, "item": ["software-properties-common", "python-software-properties", "devscripts", "build-essential", "libffi-dev", "libssl-dev", "vim"], "module_stderr": "sudo: a password is required\n", "module_stdout": "", "msg": "MODULE FAILURE"}
布赖恩·布鲁格曼

这应该工作。

- name: Create Ec2 Instances
  hosts: localhost
  connection: local
  gather_facts: False

  vars:
    project_name: device-graph
    ami_id: ami-59799439  # debian jessie 64-bit hvm
    region: us-west-2
    zone: "us-west-2c"
    instance_size: "t2.nano"

  tasks:
    - name: Provision a set of instances
      ec2:
        key_name: my_key
        group: ["SSH only"]
        instance_type: "{{ instance_size }}"
        image: "{{ ami_id }}"
        wait: true
        exact_count: 1
        count_tag:
          Name: "{{ project_name }}-{{ username.stdout }}-test"
          Creator: "{{ username.stdout }}"
          Project: "{{ project_name }}"
        instance_tags:
          Name: "{{ project_name }}-{{ username.stdout }}-test"
          Creator: "{{ username.stdout }}"
          Project: "{{ project_name }}"
      register: ec2

    - name: Add all instance public IPs to host group
      add_host:
        hostname: "{{ item.public_ip }}"
        groups: launched_ec2_hosts
      with_items: "{{ ec2.tagged_instances }}"


- name: configuration play
  hosts: launched_ec2_hosts
  user: admin
  gather_facts: true

  vars:
    ansible_ssh_private_key_file: "~/.ssh/project-name.pem"

  tasks:
    - name: get the username running the deploy
      shell: whoami
      register: username

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Terraform - 为 EC2 实例分配多个子网

来自分类Dev

在EC2实例上运行ansible任务

来自分类Dev

使用Ansible启动AWS EC2实例的最佳方法

来自分类Dev

ansible ec2运行列表必须是实例列表

来自分类Dev

Ansible-如何启动(购买)保留的EC2实例

来自分类Dev

使用AWS凭证由Ansible创建EC2实例

来自分类Dev

Ansible EC2模块未检索实例信息

来自分类Dev

使用Ansible连接到AWS EC2实例

来自分类Dev

使用 Ansible 配置多个 EC2 实例

来自分类Dev

如何为ec2实例设置ansible?

来自分类Dev

ec2 实例的 Ansible wait_for 连接超时

来自分类Dev

如何将私有IP重新分配给新的EC2实例AWS

来自分类Dev

EC2实例中的新卷未反映

来自分类Dev

创建与ansible的新ec2卷时出错

来自分类Dev

创建与ansible的新ec2卷时出错

来自分类Dev

Ansible - EC2 创建新标签并删除标签

来自分类Dev

Amazon EC2-通过Ansible为用户创建AWS EC2实例失败

来自分类Dev

如何从Ansible中的实例ID获取EC2实例IP

来自分类Dev

EC2实例创建

来自分类Dev

EC2实例淘汰-只是从AMI重新启动或启动新实例?

来自分类Dev

AWS EC2 Auto-Scaling 添加新实例是否与当前实例完全相同?

来自分类Dev

使用 EC2 Java API 创建新的 EC2 实例时与标签创建相关的错误

来自分类Dev

如何知道EC2实例是EC2 Classic还是EC2 VPC实例?

来自分类Dev

如何使用Boto自动将公用IP分配给EC2实例

来自分类Dev

如何选择未分配给EC2实例的所有弹性IP?

来自分类Dev

如何仅将私有IP分配给EC2实例?

来自分类Dev

为没有弹性IP的ec2实例分配域名

来自分类Dev

如何获取尚未分配给 EC2 实例的安全组

来自分类Dev

如何列出分配给运行 AWS EC2 实例的密钥对

Related 相关文章

热门标签

归档