具有多种环境的最佳 Ansible 布局
Best Ansible layout with multiple environments
我对如何使用 ansible 管理多个环境 (prod/dev) 感到非常困惑。
我也在用molecule在本地测试。
这是我目前的项目布局。
|----inventories/
| |
| |--dev/
| | |
| | |--group_vars/...
| | |
| | |--host_vars/...
| |
| |--prod/
| |
| |--group_vars/...
| |
| |--host_vars/
| |
| |--my_playbook_hostname_vars.yml
|
|----roles/...
|
|----hosts.yml
|
|----my_playbook.yml
|
这是根据docu
的目录结构
现在我有了我的分子文件,我可以在其中 link 像这样的开发目录
# molecule.yml
provisioner:
name: ansible
inventory:
links:
group_vars: ../../../../inventories/dev/group_vars/
host_vars: ../../../../inventories/dev/host_vars/
因此,Molecule 可以很好地使用 vagrant 驱动程序进行本地测试,我还可以将其设置为使用 EC2 驱动程序在云中进行测试。到目前为止,一切都很好。
但是我该如何启动 my_playbook.yml?当我使用 ansible-playbook my_playbook.yml
时,它不知道在哪里寻找变量,因为有两个环境。我如何告诉 Ansible 查看 inventories/prod/group_vars 和 inventories/prod/host_vars,然后通过主机和组名进一步解析,就像在 hosts.yml 中定义的那样,而不影响我的分子设置?
当我在根目录中设置 group_vars/ & host_vars/ 时,它可以工作
-i, --inventory
specify inventory host path or comma separated host list.
一个选项是为每个环境创建一个单独的主机文件(与您提供的文档 link 中的方式几乎相同)。像这样:
|-- inventories
| |-- dev
| | |-- group_vars/
| | |-- host_vars/
| | |-- hosts
| |-- prod
| |-- group_vars/
| |-- host_vars/
| |-- hosts
|-- roles/
|-- my_playbook.yml
...然后用 -i
调用 ansible-playbook
ansible-playbook my_playbook.yml -i inventories/dev/hosts
# or
ansible-playbook my_playbook.yml -i inventories/prod/hosts
我对如何使用 ansible 管理多个环境 (prod/dev) 感到非常困惑。 我也在用molecule在本地测试。
这是我目前的项目布局。
|----inventories/
| |
| |--dev/
| | |
| | |--group_vars/...
| | |
| | |--host_vars/...
| |
| |--prod/
| |
| |--group_vars/...
| |
| |--host_vars/
| |
| |--my_playbook_hostname_vars.yml
|
|----roles/...
|
|----hosts.yml
|
|----my_playbook.yml
|
这是根据docu
的目录结构现在我有了我的分子文件,我可以在其中 link 像这样的开发目录
# molecule.yml
provisioner:
name: ansible
inventory:
links:
group_vars: ../../../../inventories/dev/group_vars/
host_vars: ../../../../inventories/dev/host_vars/
因此,Molecule 可以很好地使用 vagrant 驱动程序进行本地测试,我还可以将其设置为使用 EC2 驱动程序在云中进行测试。到目前为止,一切都很好。
但是我该如何启动 my_playbook.yml?当我使用 ansible-playbook my_playbook.yml
时,它不知道在哪里寻找变量,因为有两个环境。我如何告诉 Ansible 查看 inventories/prod/group_vars 和 inventories/prod/host_vars,然后通过主机和组名进一步解析,就像在 hosts.yml 中定义的那样,而不影响我的分子设置?
当我在根目录中设置 group_vars/ & host_vars/ 时,它可以工作
-i, --inventory
specify inventory host path or comma separated host list.
一个选项是为每个环境创建一个单独的主机文件(与您提供的文档 link 中的方式几乎相同)。像这样:
|-- inventories
| |-- dev
| | |-- group_vars/
| | |-- host_vars/
| | |-- hosts
| |-- prod
| |-- group_vars/
| |-- host_vars/
| |-- hosts
|-- roles/
|-- my_playbook.yml
...然后用 -i
ansible-playbook my_playbook.yml -i inventories/dev/hosts
# or
ansible-playbook my_playbook.yml -i inventories/prod/hosts