我正在使用Ansible使用ansible-pull (运行在cron上)。
我可以在不登录到所有计算机的情况下从Ansible Galaxy安装Ansible角色(只需向我的Ansible剧本添加一个命令)吗?
发布于 2014-08-30 18:54:07
如果我正确地理解了您,您将尝试从命令行下载和安装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')解释/ FYI
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运行角色更新。有了一点魔力,你就不必创建库存文件或剧本了(这有时会很有用)。通过push远程安装Galaxy角色的解决方案不那么麻烦/更干净,但是如果您更喜欢使用cron和拉出,那么这会有所帮助。
发布于 2019-04-14 21:46:35
我通常在自己的存储库中添加来自星系的角色作为子模块;这样,我就可以控制更新它们的时间,而ansible-pull将自动获取它们--从而消除了运行ansible-galaxy的需要。
例如:
mkdir roles
git submodule add https://github.com/groover/ansible-role-packerio roles/groover.packerio发布于 2016-04-29 13:12:37
是的你可以。
# install Ansible Galaxy requirements via the pull playbook itself
- hosts: localhost
tasks:
- command: ansible-galaxy install -r requirements.ymlhttps://stackoverflow.com/questions/25302588
复制相似问题