[ansible-playbook]4 持续集成环境之分布式部署利器 ansible play学习

Posted carol2000

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[ansible-playbook]4 持续集成环境之分布式部署利器 ansible play学习相关的知识,希望对你有一定的参考价值。

3 ansible-play讲的中太少了,今天稍微深入学习一点

预计阅读时间:15分钟

一: 安装部署

参考 http://getansible.com/begin/an_zhuang_ansile 

二:常用模块

a. service 用于启动检查服务

b. file 用于文件删除 链接 创建

c.shell 用于执行脚本(不推荐,因为shell操作有时并非幂等,而且不方便检查执行结果)

d.copy 用于拷贝文件

e. vars+ template 用于根据模板文件基于变量创建配置文件

样例:

test.yml

---
#Task1
- hosts: web
  vars:
   domain: 0731
  remote_user: root
  tasks:
  - name: test connection
    ping:
  - name: httpd check
    service: name=sshd state=started
  - name: remove foo.conf
    file: dest=/etc/foo.conf state=absent
    #- name: delete foo.conf
    #shell: rm -f /etc/foo.conf

  - name: copy foo.conf
    copy: src=/srv/myfiles/foo.conf dest=/etc/foo.conf
          owner=root group=root mode=064
    notify:
      - Verify Conf

  - name: Add template Config
    template: src=serversforhackers.com.j2 dest=/etc/{{ domain }}.conf owner=root group=root

  handlers:
  - name: Verify Conf
    shell: file /etc/foo.conf

#Task2
- hosts: server
  vars:
    sdomain: server_0731
    domain: 0731
  remote_user: root
  tasks:
  - name: Add template Config
    template: src=serversforhackers.com.j2 dest=/etc/{{ sdomain }}.conf owner=root group=root

 

模板文件: templates/serversforhackers.com.j2

server {
    # Enforce the use of HTTPS
    listen 80 default_server;
    server_name *.{{ domain }};
    return 301 https://{{ domain }}$request_uri;
}

hosts文件: 

[web]
10.0.0.3
10.0.0.4
[server]
10.0.0.5
10.0.0.6
[gateway]
10.0.0.7

 

执行脚本: # ansible-playbook -i host test.yml   (-i 表示指定读取的host文件路径)

PLAY [web] *******************************************************************************************************************************************************************************************************************************************************************

TASK [Gathering Facts] *******************************************************************************************************************************************************************************************************************************************************
ok: [10.0.0.4]
ok: [10.0.0.3]

TASK [test connection] *******************************************************************************************************************************************************************************************************************************************************
ok: [10.0.0.4]
ok: [10.0.0.3]

TASK [httpd check] ***********************************************************************************************************************************************************************************************************************************************************
ok: [10.0.0.3]
ok: [10.0.0.4]

TASK [remove foo.conf] *******************************************************************************************************************************************************************************************************************************************************
changed: [10.0.0.3]
changed: [10.0.0.4]

TASK [copy foo.conf] *********************************************************************************************************************************************************************************************************************************************************
changed: [10.0.0.4]
changed: [10.0.0.3]

TASK [Add template Config] ***************************************************************************************************************************************************************************************************************************************************
ok: [10.0.0.4]
ok: [10.0.0.3]

RUNNING HANDLER [Verify Conf] ************************************************************************************************************************************************************************************************************************************************
changed: [10.0.0.3]
changed: [10.0.0.4]

PLAY [server] ****************************************************************************************************************************************************************************************************************************************************************

TASK [Gathering Facts] *******************************************************************************************************************************************************************************************************************************************************
ok: [10.0.0.5]
ok: [10.0.0.6]

TASK [Add template Config] ***************************************************************************************************************************************************************************************************************************************************
ok: [10.0.0.5]
ok: [10.0.0.6]

PLAY RECAP *******************************************************************************************************************************************************************************************************************************************************************
10.0.0.3                   : ok=7    changed=3    unreachable=0    failed=0
10.0.0.4                   : ok=7    changed=3    unreachable=0    failed=0
10.0.0.5                   : ok=2    changed=0    unreachable=0    failed=0
10.0.0.6                   : ok=2    changed=0    unreachable=0    failed=0

 

注:完整模块参见 http://docs.ansible.com/ansible/latest/modules_by_category.html

三 常见检查

语法检查  # ansible-playbook --syntax-check test.yml

注:报错信息有可能位置不准,碰见过对齐格式不正确引发的错误

列出主机  # ansible-playbook -i hosts --list-hosts test.yml

 

四 最佳实践

参考 http://docs.ansible.com/ansible/latest/playbooks_best_practices.html

根据 Roles分类,存放template 文件,加密yml(如果需要的话)

Git hub上的实例: https://github.com/ansible/ansible-examples 

 

参考资料:

https://serversforhackers.com/c/an-ansible-tutorial

http://getansible.com/advance/best_practice/zui_jia_shi_yong_fang_fa

以上是关于[ansible-playbook]4 持续集成环境之分布式部署利器 ansible play学习的主要内容,如果未能解决你的问题,请参考以下文章

持续集成开篇之代码发布流程

Gitlab+jenkins持续集成+自动化部署

jmeter持续集成化---jmeter+Ant+DOS构建执行脚本

集成环信IM入门教程——如何导入及运iOS demo

集成环信IM入门教程——如何导入及运iOS demo

持续集成与持续部署宝典Part 4:创建持续部署流水线