问题描述
在使用Ansible时,遇到了一些问题。他按照Ansible最佳实践文档中的建议设置了目录结构,但是对如何实际使用这个结构不清楚。他的目录结构如下:
inventory/
client1/
group_vars/
all
credentials.yml <encrypted>
router
switch
firewall
host_vars/
router1
switch1
firewall1
hosts
client2/
group_vars/
all
credentials.yml <encrypted>
router
switch
firewall
host_vars/
router1
switch1
firewall1
hosts
roles/
role1/
tasks/
main.yml
role2/
tasks/
main.yml
他的hosts文件包含了路由器、交换机和防火墙的信息,如下所示:
[router]
router1 ansible_host=1.2.3.4
[switch]
switch1 ansible_host=5.6.7.8
[firewall]
firewall1 ansible_host=9.10.11.12
他想知道如何在运行ansible-playbook命令时选择特定的主机,以及如何指定位于根目录中的playbooks,而不需要每次都返回上级目录。此外,他还想知道如何加载额外的凭据文件或组变量。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
问题1:如何选择特定的主机运行ansible-playbook?
要选择特定的主机运行ansible-playbook,可以在play中使用hosts
关键字指定主机。例如,要选择router1
这个主机,可以这样写:
- hosts: router1
问题2:如何指定位于根目录中的playbooks?
要指定位于根目录中的playbooks,可以配置DEFAULT_HOST_LIST
。例如,可以这样运行playbook:
ANSIBLE_HOSTS=$PWD/inventory/client1/hosts ansible-playbook myplaybook.yml
问题3:如何加载额外的凭据文件或组变量?
有很多方法可以加载额外的凭据文件或组变量。可以使用include_vars
指令加载额外的凭据文件。对于组变量,可以根据需要选择适合的方法。详细的选项可以参考Variable precedence: Where should I put a variable?。
以上是针对用户提出的问题的解决方案。希望对您有所帮助!
正文完