ansible问题用法汇总

Posted by 梁远鹏 on 2021-04-26 | 阅读 |,阅读约 1 分钟

TOC

前言

本文长期更新,欢迎投稿:)

入门用法

这个只是记录一下最简单的一个用法示例

---
- hosts: deploy
  vars:

  tasks:

    - name: create fold
      shell: mkdir -p /root/dev/lank8s

    - name: copy yaml
      copy:
        src: /home/lan/repo/git/lank8s/deploy/test/files/
        dest: /root/dev/lank8s/

    - name: docker-compose up
      shell: cd /root/dev/lank8s && docker-compose -f docker-compose-parser.yml up -d && docker-compose -f docker-compose-ecf.yml up -d

    - name: docker-compose ps
      shell: cd /root/dev/lank8s && docker-compose -f docker-compose-parser.yml ps
ansible-playbook -i ansible/hostfile ansible/book.yml

上述配置以及命令表示 调用 ansible-playbook 去对一组机器执行一批命令,一组机器的组名为 deploy,一批命令则是各个 tasks.

命令的效果是在远程机器上做如下操作:

  1. 创建目录 /root/dev/lank8s
  2. 复制本机器 /home/lan/repo/git/lank8s/deploy/test/files/ 下的文件到远程机器的 /root/dev/lank8s/
  3. 在远程机器执行命令 cd /root/dev/lank8s && docker-compose -f docker-compose-parser.yml up -d && docker-compose -f docker-compose-ecf.yml up -d
  4. 在远程机器执行命令 cd /root/dev/lank8s && docker-compose -f docker-compose-parser.yml ps

常用/关键

直接在当前机器执行命令

ansible -i localhost ansible-playbook -i localhost book.yml

无论是否失败,一定执行某个 ansible-playbook 的 task

    - name: always task
      always: yes
      tags:
        - always
      register: always_task
      command: /usr/bin/true

我的 ansible-playbook 版本是 2.15.2,一开始这样用总是报错,提示有语法错误,最终改成下面的方式,使用 tags, (似乎也不行 :( )

    - name: always task
      tags:
        - always
      register: always_task
      command: /usr/bin/true

实践场景

CI/CD

目前我将 ansible-playbook 用作的场景有以下:

  • 自动化部署,批量在多台机器上基于 docker-compose 部署服务
  • CI, 当做 CI 来执行一些编译构建任务

微信公众号

扫描下面的二维码关注我们的微信公众号,第一时间查看最新内容。同时也可以关注我的Github,看看我都在了解什么技术,在页面底部可以找到我的Github。

wechat-qrcode