Ansible - 具有动态库存的组变量
Ansible - Group Variables with Dynamic Inventory
我正在尝试开始使用 ansible,我当前的项目正在部署一个 Graylog 集群。我在 AWS 中运营,需要处理动态库存。我想我缺少 link betweek 我的剧本和动态实例获取组变量中定义的变量。
这是我的目录结构。 https://pastebin.com/cuNH4bzX
这是我的 tag_Application_graylog 文件 https://pastebin.com/Vw0cbnZq
当我在播放目录中时,我可以使用该标签连接到实例。
ubuntu@ip-10-128-0-86:~/deployments/plays$ ansible -m ping tag_Application_graylog
ec2_justin_graylog01_dev | SUCCESS => {
"changed": false,
"failed": false,
"ping": "pong"
}
ec2_justin_graylog02_dev | SUCCESS => {
"changed": false,
"failed": false,
"ping": "pong"
}
当我尝试 运行 播放时,出现以下错误。
TASK [elastic.elasticsearch : os-specific vars] *******************************************************************************************************************************************************************
task path: /home/ubuntu/deployments/roles/elastic.elasticsearch/tasks/main.yml:2
ok: [ec2_justin_graylog01_dev] => {"ansible_facts": {"default_file": "/etc/default/elasticsearch", "es_home": "/usr/share/elasticsearch", "java": "{% if es_java is defined %}{{es_java}}{% else %}openjdk-8-jre-headless{% endif %}"}, "ansible_included_var_files": ["/home/ubuntu/deployments/roles/elastic.elasticsearch/vars/Debian.yml"], "changed": false, "failed": false}
ok: [ec2_justin_graylog02_dev] => {"ansible_facts": {"default_file": "/etc/default/elasticsearch", "es_home": "/usr/share/elasticsearch", "java": "{% if es_java is defined %}{{es_java}}{% else %}openjdk-8-jre-headless{% endif %}"}, "ansible_included_var_files": ["/home/ubuntu/deployments/roles/elastic.elasticsearch/vars/Debian.yml"], "changed": false, "failed": false}
TASK [elastic.elasticsearch : fail] *******************************************************************************************************************************************************************************
task path: /home/ubuntu/deployments/roles/elastic.elasticsearch/tasks/elasticsearch-parameters.yml:3
fatal: [ec2_justin_graylog01_dev]: FAILED! => {"changed": false, "failed": true, "msg": "es_instance_name must be specified and cannot be blank"}
fatal: [ec2_justin_graylog02_dev]: FAILED! => {"changed": false, "failed": true, "msg": "es_instance_name must be specified and cannot be blank"}
to retry, use: --limit @/home/ubuntu/deployments/plays/graylog.retry
PLAY RECAP ********************************************************************************************************************************************************************************************************
ec2_justin_graylog01_dev : ok=6 changed=0 unreachable=0 failed=1
ec2_justin_graylog02_dev : ok=6 changed=0 unreachable=0 failed=1
因为 'es_instance_name' 是在我的组变量中定义的,所以我相信它们没有被读入。
我用于 运行 playbook 的命令,来自 plays 文件夹。
ansible-playbook -vv graylog.yml
命令的完整输出。 https://pastebin.com/NxNFVbBG
graylog.ymlhttps://pastebin.com/Liq8qCDi
的内容
任何帮助都会很棒。
找到问题。
https://github.com/ansible/ansible/issues/16878
基本上,group_vars 需要与剧本相邻的文件夹。所以我要么需要将我的游戏提升一个级别,要么将组 var 文件夹降低一个级别。
根据已发布的最佳实践,我将我的游戏提升了一个级别。
https://docs.ansible.com/ansible/latest/playbooks_best_practices.html#content-organization
我正在尝试开始使用 ansible,我当前的项目正在部署一个 Graylog 集群。我在 AWS 中运营,需要处理动态库存。我想我缺少 link betweek 我的剧本和动态实例获取组变量中定义的变量。
这是我的目录结构。 https://pastebin.com/cuNH4bzX
这是我的 tag_Application_graylog 文件 https://pastebin.com/Vw0cbnZq
当我在播放目录中时,我可以使用该标签连接到实例。
ubuntu@ip-10-128-0-86:~/deployments/plays$ ansible -m ping tag_Application_graylog
ec2_justin_graylog01_dev | SUCCESS => {
"changed": false,
"failed": false,
"ping": "pong"
}
ec2_justin_graylog02_dev | SUCCESS => {
"changed": false,
"failed": false,
"ping": "pong"
}
当我尝试 运行 播放时,出现以下错误。
TASK [elastic.elasticsearch : os-specific vars] *******************************************************************************************************************************************************************
task path: /home/ubuntu/deployments/roles/elastic.elasticsearch/tasks/main.yml:2
ok: [ec2_justin_graylog01_dev] => {"ansible_facts": {"default_file": "/etc/default/elasticsearch", "es_home": "/usr/share/elasticsearch", "java": "{% if es_java is defined %}{{es_java}}{% else %}openjdk-8-jre-headless{% endif %}"}, "ansible_included_var_files": ["/home/ubuntu/deployments/roles/elastic.elasticsearch/vars/Debian.yml"], "changed": false, "failed": false}
ok: [ec2_justin_graylog02_dev] => {"ansible_facts": {"default_file": "/etc/default/elasticsearch", "es_home": "/usr/share/elasticsearch", "java": "{% if es_java is defined %}{{es_java}}{% else %}openjdk-8-jre-headless{% endif %}"}, "ansible_included_var_files": ["/home/ubuntu/deployments/roles/elastic.elasticsearch/vars/Debian.yml"], "changed": false, "failed": false}
TASK [elastic.elasticsearch : fail] *******************************************************************************************************************************************************************************
task path: /home/ubuntu/deployments/roles/elastic.elasticsearch/tasks/elasticsearch-parameters.yml:3
fatal: [ec2_justin_graylog01_dev]: FAILED! => {"changed": false, "failed": true, "msg": "es_instance_name must be specified and cannot be blank"}
fatal: [ec2_justin_graylog02_dev]: FAILED! => {"changed": false, "failed": true, "msg": "es_instance_name must be specified and cannot be blank"}
to retry, use: --limit @/home/ubuntu/deployments/plays/graylog.retry
PLAY RECAP ********************************************************************************************************************************************************************************************************
ec2_justin_graylog01_dev : ok=6 changed=0 unreachable=0 failed=1
ec2_justin_graylog02_dev : ok=6 changed=0 unreachable=0 failed=1
因为 'es_instance_name' 是在我的组变量中定义的,所以我相信它们没有被读入。
我用于 运行 playbook 的命令,来自 plays 文件夹。
ansible-playbook -vv graylog.yml
命令的完整输出。 https://pastebin.com/NxNFVbBG
graylog.ymlhttps://pastebin.com/Liq8qCDi
的内容任何帮助都会很棒。
找到问题。
https://github.com/ansible/ansible/issues/16878
基本上,group_vars 需要与剧本相邻的文件夹。所以我要么需要将我的游戏提升一个级别,要么将组 var 文件夹降低一个级别。
根据已发布的最佳实践,我将我的游戏提升了一个级别。
https://docs.ansible.com/ansible/latest/playbooks_best_practices.html#content-organization