当前位置: 首页 > 知识库问答 >
问题:

在 Ansible 主机上运行命令

景恩
2023-03-14

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

我的场景是,我想从内部托管的git服务器(并且不能在公司防火墙之外访问)进行结帐。然后我想将结账(tarbated)上传到正式服(托管在外部)。

目前,我正在考虑运行一个脚本,执行签出、tarballs,然后运行部署脚本-但如果我可以将其集成到Ansible中,那将是更好的选择。

共有3个答案

阎德宇
2023-03-14

我想分享的是Ansible可以通过shell在localhost上运行:

ansible all -i “localhost”,-c local -m shell -a 'echo hello world'

这对于简单的任务或Ansible的一些实践学习可能很有帮助。

代码示例摘自这篇好文章:

在本地主机上运行ansible playbook

尉迟彬
2023-03-14

我发现了一些其他的方法,你可以写得更易读一些。

    - name: check out a git repository
      local_action: 
        module: git
        repo: git://foosball.example.org/path/to/repo.git
        dest: /local/path

    - name: check out a git repository
      local_action: git
      args:
        repo: git://foosball.example.org/path/to/repo.git
        dest: /local/path
姬凡
2023-03-14

是的,您可以在Ansible主机上运行命令。您可以指定游戏中的所有任务都在Ansible主机上运行,也可以将单个任务标记为在Ansile主机上运行。

如果要在Ansible主机上运行整个游戏,请在游戏中指定<code>主机:127.0.0.1

    - 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主机上运行单个任务,可以使用<code>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

有关详细信息,请参阅Anble留档中的“控制任务运行的位置:委托和本地操作”。

通过将以下内容添加到您的清单中,您可以避免在游戏中键入连接:local

localhost ansible_connection=local

(在这里,您将使用“localhost”而不是“127.0.0.1来引用剧本)。

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

 类似资料:
  • 我希望使用运行测试,但只能针对主机服务器1。有办法做到这一点吗?

  • Ansible提供了一个命令行工具,在官方文档中起给命令行起了一个名字叫Ad-Hoc Commands。 ansible命令的格式是: ansible <host-pattern> [options] ansible命令功能有哪些 先不用深纠命令的语法,讲完module那节,就可以理解语法。先从感官上,通过下面的命令认识下ansible的命令行都可以做什么。 检查ansible安装环境 检查所有的

  • 问题内容: 我可以在主机上运行docker命令吗?我安装在Docker容器中,现在可以以某种方式在主机上使用命令(在后台使用Docker容器的aws)吗? 我的情况是这样的:我在生产主机上有数据库备份。现在我有Jenkins cron作业,它将从db容器中获取sql文件,并将其放入服务器文件夹中。现在我还希望jenkins将此备份文件上传到AWS存储上,但是在主机上我没有安装aws,也不想在主机上

  • 学习如何使用ansible--我需要为集群部署准备服务器。 在所有节点上安装相同的程序集,依此类推。这部分没有问题,一切都解决了。我是通过Ansible-Playbook来做的。在每个节点上,需要在文件/etc/sysconfig/network中执行 也许一些建议,帮忙?

  • 以下是在远程主机上安装PIP/BOTO的任务,这些任务在运行route53模块时不会再出现错误:

  • 什么是 Host Inventory ( 主机目录 、主机清单)? Host Inventory 是配置文件,用来告诉Ansible需要管理哪些主机。并且把这些主机根据按需分类。 可以根据用途分类:数据库节点,服务节点等;根据地点分类:中部,西部机房。 Host Inventory 配置文件: 默认的文件是: /etc/ansible/hosts 可以修改为其它的文件,下一章Ansible进阶中介