小编典典

在 Ansible 主机上运行命令

all

是否可以在 Ansible 主机上运行命令?

我的情况是,我想从内部托管的 git 服务器进行结帐(并且在公司防火墙之外无法访问)。然后我想将结帐(压缩包)上传到生产服务器(外部托管)。

目前,我正在考虑运行一个执行结帐的脚本,将其打包,然后运行部署脚本——但如果我可以将它集成到 Ansible 中,那就更好了。


阅读 114

收藏
2022-05-04

共1个答案

小编典典

是的,您可以在 Ansible 主机上运行命令。您可以指定播放中的所有任务在 Ansible 主机上运行,​​或者您可以将单个任务标记为在 Ansible
主机上运行。

如果要在 Ansible 主机上运行整个 play,则在 play 中指定hosts: 127.0.0.1connection: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指定应在本地运行的任务。例如:

    - 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您可以通过将其添加到您的库存中来避免输入您的游戏:

localhost ansible_connection=local

(这里你会使用“ localhost”而不是“ 127.0.0.1”来指代该剧)。


在较新版本的 Ansible 中,您不再需要将上述行添加到您的清单中,Ansible 假定它已经存在。

2022-05-04