我正在使用Ansible ansible-pull
(在cron上运行)。
我可以在不登录所有计算机的情况下从Ansible Galaxy安装Ansible角色(仅通过向Ansible剧本添加命令)吗?
如果我对您的理解正确,那么您正在尝试以手动方式从命令行从Ansible Galaxy下载和安装角色,可能会反复(通过cron
)。如果是这种情况,请按照以下步骤操作。
# download the roles
ansible-galaxy install --ignore-errors f500.elasticsearch groover.packerio
# run ansible-playbook to install the roles downloaded from Ansible Galaxy
ansible-playbook -i localhost, -c local <(echo -e '- hosts: localhost\n roles:\n - { role: f500.elasticsearch, elasticsearch_cluster_name: "my elasticsearch cluster" }\n - { role: groover.packerio, packerio_version: 0.6.1 }\n')
说明/仅供参考:
ansible-galaxy
,而不要使用ansible-pull
。有关详细信息,请参见手册。您可以一次下载多个角色。ansible-galaxy install
将导致错误。如果您希望重复调用此命令(例如,从cron调用),请使用--ignore-errors
(跳过角色并移至下一项)或--force
(强制覆盖)来解决此问题。ansible-playbook
,我们可以避免必须使用创建清单文件-i localhost,
(末尾的逗号表示我们正在提供列表,而不是文件)。-c local
(与相同--connection=local
)表示我们不会进行远程连接,但会在本地主机上执行命令。<()
功能是流程替代。命令的输出显示为文件,因此我们可以将“虚拟剧本文件”输入到ansible-playbook
命令中,而无需先将剧本保存到磁盘(例如playbookname.yml)。packerio_version: 0.6.1
在单个命令中应用多个角色。echo -e
和\n
(换行符)可以很长时间地输入错字。ansible-playbook
分别从Ansible Galaxy运行角色更新。有了一点魔力,您不必创建清单文件或剧本(有时这很有用)。通过push远程安装Galaxy角色的解决方案不那么hacky / cleaner,但是如果您更喜欢使用cron
和拉取,则可以有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句