Ansible 可分配给主机的变量
在这里的第一篇文章中,我遇到了一种情况,我试图分配存储在角色中的变量,在我的例子中:/var/lib/awx/projects/test/playbooks/roles/>/vars/main.yml 但我希望它们由主机分配,因此我尝试在我的主机文件中分配它们,如下所示:Ansible 可分配给主机的变量,ansible,Ansible,在这里的第一篇文章中,我遇到了一种情况,我试图分配存储在角色中的变量,在我的例子中:/var/lib/awx/projects/test/playbooks/roles/>/vars/main.yml 但我希望它们由主机分配,因此我尝试在我的主机文件中分配它们,如下所示: [测试] 10.102.32.42 id=1站=红色。。。 但这不起作用,我的变量没有定义 我试过使用主机变量/ansible playbook test\u role.yml-I host-f 5-e guest\u va
[测试]
10.102.32.42 id=1站=红色。。。
但这不起作用,我的变量没有定义
我试过使用主机变量/ansible playbook test\u role.yml-I host-f 5-e guest\u vars\u file=host\u vars/test,但同样的,它不接受我的变量
我的测试文件:
身份证号码:1
车站:红色
我试过使用组变量/ansible playbook test\u role.yml-I host-f 5-e guest\u vars\u file=group\u vars/test
我不知道这样做是否好
我尝试了一个简单的ansible playbook测试_role.yml-I主机
并将文件放在适当的位置,但没有
我尝试在我的主机中分配变量来使用AWX,但没有成功
当我用-e传递变量时,它是有效的,但是我的变量必须根据主机进行更改
有办法吗?还是不可能?我正在使用ansible 2.4.3.0
我想知道,当我启动任务时,ansible是否在我的vars/main.yml中过度使用了变量
我只放在哪里
身份证件:
电台:
编辑:因此解决方案是在主机变量中输入正确的名称!不要将变量放入角色/my_role/vars/main.yml,因为它将覆盖存储在主机_vars中的变量。谢谢确保主机变量与playbook相关,在本例中为mytest.yml: 请注意,组变量,主机变量文件夹与某些角色文件夹无关。考虑到这些文件夹中设置的任何变量对于多个角色可能是共同的,或者它们可能与特定的主机无关,而不是特定的角色。参考;:
生产#生产服务器的库存文件
暂存#暂存环境的库存文件
组变量/
group1#这里我们将变量分配给特定的组
第2组“
东道主/
hostname1#如果系统需要特定变量,请将它们放在此处
主机名2“
库/#如果有自定义模块,请将它们放在此处(可选)
模块_utils/#如果任何自定义模块_utils支持模块,请将它们放在此处(可选)
filter_plugins/#如果有任何自定义筛选器插件,请将它们放在此处(可选)
site.yml#主剧本
webserver.yml#Web服务器层的剧本
dbserver.yml#dbserver层的剧本
角色/
公共/#此层次结构表示一个“角色”
任务/#
main.yml#refere preference(),我相信我的例子是“主机事实”,我还发现Ansible最佳实践在剧本定位方面不充分,只是说“……顶级剧本由角色分隔……”。这就是我想要添加的:playbook(yml)文件不驻留在角色文件夹中,剧本是相对于组变量、主机变量文件夹定位的。
user> find roles/mytest
roles/mytest
roles/mytest/tasks
roles/mytest/tasks/main.yml
user> cat roles/mytest/tasks/main.yml
---
- name: test myvar
shell: echo "{{ myvar }}" > /tmp/myvar
user> cat hosts2
[test]
10.102.32.42
user> cat host_vars/10.102.32.42
myvar: "this is 10.102.32.42"
user> cat mytest.yml
---
- hosts: test
roles:
- mytest
user> ansible-playbook --inventory-file=hosts2 mytest.yml
PLAY [test] *******************************************************************************************************************
TASK [Gathering Facts] ********************************************************************************************************
ok: [10.0.0.4]
TASK [mytest : test myvar] ****************************************************************************************************
changed: [10.102.32.42]
PLAY RECAP ********************************************************************************************************************
10.102.32.42 : ok=2 changed=1 unreachable=0 failed=0
user> ssh 10.102.32.42 "cat /tmp/myvar"
this is 10.102.32.42
production # inventory file for production servers
staging # inventory file for staging environment
group_vars/
group1 # here we assign variables to particular groups
group2 # ""
host_vars/
hostname1 # if systems need specific variables, put them here
hostname2 # ""
library/ # if any custom modules, put them here (optional)
module_utils/ # if any custom module_utils to support modules, put them here (optional)
filter_plugins/ # if any custom filter plugins, put them here (optional)
site.yml # master playbook
webservers.yml # playbook for webserver tier
dbservers.yml # playbook for dbserver tier
roles/
common/ # this hierarchy represents a "role"
tasks/ #
main.yml # <-- tasks file can include smaller files if warranted
handlers/ #
main.yml # <-- handlers file
templates/ # <-- files for use with the template resource
ntp.conf.j2 # <------- templates end in .j2
files/ #