首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用经过编辑的库存文件?

如何使用经过编辑的库存文件?
EN

DevOps用户
提问于 2019-11-22 12:43:48
回答 2查看 110关注 0票数 2

我有两个模板的工作流。首先,我将新主机添加到我的hosts.ini文件中:

代码语言:javascript
运行
复制
- name: Add to host file
     blockinfile:
       path: /var/lib/awx/projects/_52__glusterfs/hosts.ini
       block: |
         gluster1 ansible_user= ansible_host=

第二,我等待主人的到来:

代码语言:javascript
运行
复制
---
- name: Weit befor all hosts ssh up
  hosts: localhost
  tasks:
   - name: Test 1
     shell: cat hosts.ini
   - name: Test 2
     shell: cat /var/lib/awx/projects/_52__glusterfs/hosts.ini
   - name: Test 3
     shell: cat ansible.cfg
   - name: Wait for hosts up
     wait_for:
       host: gluster1
       port: 22

但我错了:

代码语言:javascript
运行
复制
 [WARNING]: provided hosts list is empty, only localhost is available. Note
that the implicit localhost does not match 'all'

因此,模板2中测试的输出是(伪代码输出):

代码语言:javascript
运行
复制
shell: cat hosts.ini
>>> 
[gluster]
代码语言:javascript
运行
复制
shell: cat /var/lib/awx/projects/_52__glusterfs/hosts.ini
>>> 
[gluster]
gluster1 ansible_user= ansible_host=
代码语言:javascript
运行
复制
shell: cat ansible.cfg
>>> 
[defaults]
inventory = /var/lib/awx/projects/_52__glusterfs/hosts.ini
host_key_checking = false

[ssh_connection]
ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null

[inventory]
enable_plugins = host_list, script, auto, yaml, ini, toml

为什么在我的执行目录中有空的hosts.ini,为什么在/var/lib/awx/projects/_52__glusterfs/hosts.ini文件中使用它而不是D6

EN

回答 2

DevOps用户

回答已采纳

发布于 2019-11-29 15:46:42

听起来,一旦你更新了清单,你就需要再次收集事实。你开始的时候

首先,我将新主机添加到我的hosts.ini文件中

但是,直到您告诉Ansible库存发生了变化,才会通知它这一。如果这是在播放期间完成的,则应该使用添加_主机模块:

代码语言:javascript
运行
复制
- name: Add host gluster1 to group gluster
  add_host:
    name: gluster1
    groups: gluster

这将更新Ansible的事实,即它将与新主机联系并查找有关它的一切,现在它知道它在gluster组中。

请注意,然后您应该开始一个新的游戏,针对这个主机:

代码语言:javascript
运行
复制
---
- name: First play to build hosts
  hosts: localhost
  tasks:
    - name: Add host gluster1 to group gluster
      add_host:
        name: gluster1
        groups: gluster
    - name: Persist inventory
      blockinfile:
        path: /var/lib/awx/projects/_52__glusterfs/hosts.ini
        block: |
          gluster1 ansible_user= ansible_host=
        state: present

- name: Second play to do gluster things
  hosts: gluster  # This group now exists in Ansible's in-memory inventory
  tasks:
    - name: Wait for hosts up
      wait_for:
        host: gluster1
        port: 22
    - name: Be awesome
      debug:
        msg: "Awesomeness Achieved"
票数 1
EN

DevOps用户

发布于 2019-11-29 02:53:54

在您的配置文件中有如下内容:

代码语言:javascript
运行
复制
[inventory]
enable_plugins = host_list, script, auto, yaml, ini, toml

你真的需要这些插件吗?如果不是,他们只会给你的处理增加时间。其中之一成功地将您的库存文件解析为空库存的可能性也很小。文档指出,

一旦一个库存插件成功地解析了一个源,任何剩余的清单插件都会被跳过。

如果你不需要那些插件,我会评论这一行(或者重做它以删除一些项目)。

另外,您确定它使用的是本地hosts.ini吗?命令ansible-config可能有助于确认这一点。

关于您的第一个问题(“为什么我在执行目录中有空hosts.ini”),您的剧本中没有任何指向正在创建或修改该文件的内容。你是想修改它吗?还是你不知道它是怎么创造出来的?问题还不清楚。

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

https://devops.stackexchange.com/questions/9893

复制
相关文章

相似问题

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