首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法让Ansible playbook在初始运行时运行

无法让Ansible playbook在初始运行时运行
EN

Stack Overflow用户
提问于 2020-01-07 04:20:05
回答 3查看 202关注 0票数 0

我遇到了Ansible 2.9的一个问题,在创建ec2实例之后,在它第一次尝试使用我创建的剧本在该实例上运行apt更新之前,我得到了以下错误:

代码语言:javascript
复制
[WARNING]: Could not match supplied host pattern, ignoring: tag_type_master

然而,当我第二次运行它时,它确实找到了与该标签匹配的主机,并继续运行apt更新和其余的playbook任务。

下面是我正在运行的命令:

代码语言:javascript
复制
ansible-playbook deploy.yaml --private-key ../../../../../Downloads/XXXXXXX.pem --inventory=inventory_aws_ec2.yaml

这是我的deploy.yaml文件:

代码语言:javascript
复制
- name: Build out AWS Infrastructure
  hosts: localhost
  connection: local
  gather_facts: False
  roles:
    - role: aws

- name: Setup Master
  hosts: tag_type_master
  remote_user: ubuntu
  become: yes
  roles:
    - role: master

- name: Build Master AMI
  hosts: localhost
  connection: local
  roles:
    - role: master_ami

这是我的inventory_aws_ec2.yaml文件:

代码语言:javascript
复制
plugin: aws_ec2
regions:
    - us-east-2
keyed_groups:
  - key: tags.type
    prefix: tag_type_
    separator: ""
hostnames:
    - dns-name
compose:
  ansible_host: dns-name
cache: yes
cache_plugin: memory
cache_timeout: 7200
cache_prefix: aws_ec2

下面是我的ansible.cfg文件:

代码语言:javascript
复制
[defaults]
host_key_checking = False
fact_caching = memory
cache_timeout = 3600

[inventory_aws_ec2]
enable_plugins = aws_ec2
cache = yes

我是不是漏掉了什么?提前感谢!

更新:

我还可以毫无问题地运行ansible-inventory命令,它给出了预期的结果:

代码语言:javascript
复制
ansible-inventory -i inventory_aws_ec2.yaml --graph
@all:
  |--@aws_ec2:
  |  |--ec2-XX-XX-XX-XX.us-east-2.compute.amazonaws.com
  |  |--ec2-XX-XX-XX-XX.us-east-2.compute.amazonaws.com
  |  |--ec2-XX-XX-XX-XX.us-east-2.compute.amazonaws.com
  |  |--ec2-XX-XX-XX-XX.us-east-2.compute.amazonaws.com
  |  |--ec2-XX-XX-XX-XX.us-east-2.compute.amazonaws.com
  |  |--ec2-XX-XX-XX-XX.us-east-2.compute.amazonaws.com
  |--@tag_type_master:
  |  |--ec2-XX-XX-XX-XX.us-east-2.compute.amazonaws.com
  |--@ungrouped:
EN

回答 3

Stack Overflow用户

发布于 2020-01-09 01:01:54

我想通了。我需要添加一个refresh_inventory步骤:

代码语言:javascript
复制
- name: Refresh inventory to ensure new instances exist in inventory
  meta: refresh_inventory
票数 1
EN

Stack Overflow用户

发布于 2020-01-07 04:53:25

我在您提供的标签主目录文件中没有看到任何主机

应该是这样的

代码语言:javascript
复制
[master]
127.0.0.1 ansible_connection=local
票数 0
EN

Stack Overflow用户

发布于 2020-01-07 15:49:18

怀疑是时间同步问题。

  • 通常情况下,实例启动和运行需要一些时间。在扮演master角色之前,您可以尝试添加睡眠/等待任务,并确保实例已启动并正在运行。

代码语言:javascript
复制
    - name: Status
      debug:
        msg: "{{ item }} : Waiting for instances online..."
      with_items: "{{ new_ec2_list }}"

无论如何,请分享结果

谢谢

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59618429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档