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.
命令的效果是在远程机器上做如下操作:
- 创建目录
/root/dev/lank8s
- 复制本机器
/home/lan/repo/git/lank8s/deploy/test/files/
下的文件到远程机器的/root/dev/lank8s/
- 在远程机器执行命令
cd /root/dev/lank8s && docker-compose -f docker-compose-parser.yml up -d && docker-compose -f docker-compose-ecf.yml up -d
- 在远程机器执行命令
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。