ansible-playbook不同主机之间的变量传递

ansible-playbook不同主机之间的变量传递

示例:自动化将目标主机加入到 swarm 集群,成为工作节点

---
- hosts: 192.168.0.10
  tasks:
    - name: 查看 worker 加入集群的 token
      command: docker swarm join-token worker
      register: worker_join_token

    - name: set facts
      set_fact: worker_join_token={{ worker_join_token.stdout.replace('To add a worker to this swarm, run the following command:\n\n    ', '').replace('\\\n','') }}
   
    - name: echo
      debug: msg={{ worker_join_token }}

- hosts: mongo
  tasks:
    - name: 加入 swarm 集群
      command: "{{ hostvars['192.168.0.10']['worker_join_token'] }}"
      ignore_errors: true

    - name: 创建 MongoDB 数据卷
      command: docker volume create mongo_data

    - name: 启动 MongoDB
      command: docker run -d -p 27017:27017 --name mongo -v mongo_data:/data/db mongo

原理如下:

  1. 将任务执行的结果注册到变量,此变量的作用域为当前的 playbook
  2. 使用set_fact模块将变量注册到fact这个全局对象。
  3. 使用跨主机变量引用

转载:https://www.jianshu.com/p/9c43383e9563

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ansible-playbook 是 Ansible 的一个命令行工具,用于运行 Ansible Playbook 文件。以下是 Ansible-playbook 的语法: ``` ansible-playbook [options] playbook.yml ``` 其中,`options` 是可选参数,包括: - `-i INVENTORY, --inventory-file=INVENTORY`:指定 Ansible Inventory 文件的路径。 - `-l SUBSET, --limit=SUBSET`:限制 Playbook 的作用范围到某些主机或组。 - `-t TAGS, --tags=TAGS`:只运行指定标签的任务。 - `-e EXTRA_VARS, --extra-vars=EXTRA_VARS`:传递额外的变量给 Playbook。 - `-f FORKS, --forks=FORKS`:指定同时在多少台主机上运行任务。 - `-v, --verbose`:增加 Ansible 的输出详细程度。 - `-vv, --verbose --verbose`:增加更详细的输出。 - `-vvv, --verbose --verbose --verbose`:增加最详细的输出。 `playbook.yml` 是 Ansible Playbook 文件的路径。Playbook 文件是一个 YAML 格式的文件,包含了一系列任务和配置信息。其中,每个任务都包含了一个或多个模块,用于在远程主机上执行操作。 以下是一个简单的 Ansible Playbook 示例: ```yaml --- - name: Install Apache HTTP Server hosts: webservers become: true tasks: - name: Install Apache HTTP Server yum: name: httpd state: present - name: Start Apache HTTP Server service: name: httpd state: started enabled: true ``` 该 Playbook 包含了两个任务,分别用于安装和启动 Apache HTTP Server。其中,`hosts` 参数指定了要在哪些主机上执行任务,`become` 参数指定了以超级用户身份执行任务。每个任务都包含了一个模块,用于执行操作。在该示例中,分别使用了 `yum` 和 `service` 模块来安装和启动 Apache HTTP Server。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值