问题标签 [ansible-role]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ansible - Specify version of role in Ansible playbook
When downloading roles it's possible to specify roles. One of several ways would be with the following requirements.yml
file:
This role could then be downloaded with the following command:
How do you then specify which version of a role to use in an Ansible playbook?
ansible - Creating a dynamic role in ansible
After going through several documentation I concluded that, I can't use with_items
for roles
.
So, I created a filter_plugin
to generate a list of dictionaries for roles.
Here is my Play
:
I want to generate above roles dynamically and for that I created a filter_plugin
which generates a list of dictionaries and that is working right.
Here is my plugin:
My plan was to generate roles like following:
where EC2_REGIONS
is ['ap-southeast-2', 'us-east-1']
But roles are not working in that way.
I am getting following error:
ERROR! A malformed role declaration was encountered.
Any thoughts/ideas ?
ansible - 从另一个角色调用 eddyhub.gnome_shell 角色(来自 ansible Galaxy)
我想在 ansible 剧本中安装 gnome 扩展,发现:https ://galaxy.ansible.com/eddyhub/gnome_shell/不错!
我组织我的剧本的方式,我想从另一个任务中调用角色,所以我创建了一个这样的任务(这是完整的任务文件,位于(roles/common/tasks/gnome.yaml):
但是运行剧本,我得到这个错误:
我究竟做错了什么?
ansible - Ansible 执行所有包含在角色中
我在一位同事的旧角色中包含以下内容。
但是,无论我如何包含角色,Ansible 都会自动处理每个包含。我可以使用--list-tasks选项来验证这一点。
例如在我的剧本中,我有以下内容
我使用 2.1.1.0 版本(几周前升级)。此角色在升级前执行良好。
因此,我想知道这种包含在角色中的样式是否不再允许,或者我需要使用一些不同的语法。
ansible - Ansible:仅对某些主机执行角色
假设我有一个剧本,其中包含一些用于安装应用服务器的角色,并且我喜欢在生产服务器和测试服务器上应用相同的剧本。
生产服务器和测试服务器都有相同的角色列表,除了一个,它只应该应用于生产服务器。
是否可以以某种方式指定此角色仅适用于使用相同剧本的生产服务器?
例如,如果剧本是:
我有两个库存:一个用于生产,一个用于测试。
当我使用测试清单运行剧本时,我不希望执行“防火墙”角色。
我的想法是做一些事情,比如在“生产”库存中设置一个变量,并使用类似“如果设置了 <var>,然后执行角色“防火墙” ”......我不知道这是否可能,如果它是,怎么办?
ansible - 有条件地设置 Ansible 角色默认值
伪代码:
如果 env 是 de,则将变量名设置为 hello,否则如果 env 是 prod,则将变量名设置为 bye。
我试过https://serverfault.com/questions/715769/ansible-change-default-value-according-to-a-condition
错误!角色“试用”的 default/main.yml 文件必须包含变量字典
ansible - Ansible 角色 YAML 错误
测试基本的 Ansible 角色设置,但在角色的第一行出现错误,但main.yml
我确信这很愚蠢
play.yml
目录结构
main.yml
当我运行时ansible-playbook play.yml
,我得到了错误
它看起来像一个简单的 YAML 解析错误,但如果我运行ansible-playbook main.yml
它,它工作正常,所以不确定发生了什么。有什么想法吗?
ansible - 在ansible中调用角色时如何使用成为?
become
在ansible中使用角色时,您如何成为用户?
例如,如何使用 ansible Galaxy 中的geerlingguy.nodejs
角色以 root 身份安装 nodejs?这是我所拥有的相关部分:
但这会ERROR! Syntax Error while loading YAML
在 YAML 文件中产生。
ansible - 在具有操作系统特定默认值的角色中定义 Ansible 变量,该默认值可以轻松覆盖
我正在编写一个可在不同 Linux 操作系统系列上使用的 Ansible 角色,并且每个操作系统系列的变量具有不同的默认值。
起初,我认为在角色中使用 include vars 任务很容易设置,例如:
和
在myrole/vars/redhat.yml
在myrole/vars/debian.yml
但是,在我的情况下,使用角色的剧本能够轻松覆盖默认值非常重要。
因此,我试图找出一种方法来为每个操作系统系列的变量设置不同的默认值,如上所述,但我希望变量是角色默认变量而不是角色包含变量。有没有办法做到这一点?
ansible - Ansible 未在其处理程序中检测角色默认变量
ansible 是否将角色默认变量传递给同一角色中的处理程序?
这是有问题的剧本的一小段摘录:
角色层次结构
这是文件内容
gunicorn/defaults/main.yml
gunicorn/handlers/main.yml
完成/任务/main.yml
剧本.yml
AFAIK 一切看起来都很好。但是,我在剧本执行期间收到此错误
失败的!=> {"failed": true, "msg": "字段 'args' 的值无效,似乎包含一个未定义的变量。错误是:'gu_log' 未定义\n\n错误似乎是已在 '/roles/gunicorn/handlers/main.yml': 第 3 行第 3 列,但可能\n位于文件中的其他位置,具体取决于确切的语法问题。\n\n违规行似乎是:\n\ n\n- 名称:重新启动 Gunicorn\n ^ 此处\n"}
在 Ubuntu 12.04 LTS 上使用 Ansible 2.2
这是创建所有目录并演示我的问题的 techraf 脚本的修改版本
输出
PLAY [部署]
任务 [设置] ********************************************** ************************ 好的:[本地主机]
任务 [测试处理程序] ************************************************ **************致命:[本地主机]:失败!=> {"failed": true, "msg": "字段 'args' 的值无效,似乎包含一个未定义的变量。错误是:'gu_log' 未定义\n\n错误似乎是已在“/rtindru-test/roles/finalize/tasks/main.yml”:第 2 行第 3 列,但可能\n位于文件中的其他位置,具体取决于确切的语法问题。\n\n违规行似乎是:\n\n---\n- name: Test Handlers\n ^ here\n"} 重试,使用:--limit @/rtindru-test/playbook.retry
播放回顾 ************************************************ ************************ 本地主机:正常=1 更改=0 无法访问=0
失败=1