Ansible 可分配给主机的变量

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

在这里的第一篇文章中,我遇到了一种情况,我试图分配存储在角色中的变量,在我的例子中:/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 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/            #