是否可以在 Ansible 主机上运行命令?
我的情况是,我想从内部托管的 git 服务器进行结帐(并且在公司防火墙之外无法访问)。然后我想将结帐(压缩包)上传到生产服务器(外部托管)。
目前,我正在考虑运行一个执行结帐的脚本,将其打包,然后运行部署脚本——但如果我可以将它集成到 Ansible 中,那就更好了。
是的,您可以在 Ansible 主机上运行命令。您可以指定播放中的所有任务在 Ansible 主机上运行,或者您可以将单个任务标记为在 Ansible 主机上运行。
如果要在 Ansible 主机上运行整个 play,则在 play 中指定hosts: 127.0.0.1和connection:local,例如:
hosts: 127.0.0.1
connection:local
- name: a play that runs entirely on the ansible host hosts: 127.0.0.1 connection: local tasks: - name: check out a git repository git: repo=git://foosball.example.org/path/to/repo.git dest=/local/path
有关更多详细信息,请参阅Ansible 文档中的本地剧本。
如果您只想在 Ansible 主机上运行单个任务,则可以使用local_action指定应在本地运行的任务。例如:
local_action
- name: an example playbook hosts: webservers tasks: - ... - name: check out a git repository local_action: git repo=git://foosball.example.org/path/to/repo.git dest=/local/path
有关更多详细信息,请参阅 Ansible 文档中的“控制任务运行的位置:委托和本地操作”。
connection: local您可以通过将其添加到您的库存中来避免输入您的游戏:
connection: local
localhost ansible_connection=local
(这里你会使用“ localhost”而不是“ 127.0.0.1”来指代该剧)。
localhost
127.0.0.1
在较新版本的 Ansible 中,您不再需要将上述行添加到您的清单中,Ansible 假定它已经存在。