Ansible 脚本(Playbook基本语法)远程控制

Posted by Yancy on 2016-03-10

ansible 脚本(Playbook基本语法)远程控制

Playbook基本语法

本节列举了写第一个Playbook,你必须了解基本语法。
随着你面临的机器越多,配属的需求越复杂,你可能需要了解后面介绍的一些稍微复杂逻辑语句。

  • 执行Playbook语法

这里先

vim deploy.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
deploy.yml文件
---
- hosts: tomcat_D1
vars:
http_port: 80
max_clients: 200
user: root
tasks:
- name: ensure apache is at the latest version
yum: name=httpd state=latest
- name: write the apache config file
template: src=/srv/httpd.j2 dest=/etc/httpd.conf
notify:
- restart apache
- name: start httpd
service: name=httpd state=started
handlers:
- name: restart apache
service: name=httpd state=restarted

执行Playbook语法

1
$ ansible-playbook deploy.yml

查看输出的细节 1

1
ansible-playbook playbook.yml --list-hosts

查看该脚本影响哪些hosts

1
ansible-playbook playbook.yml --list-hosts

并行执行脚本

1
ansible-playbook playbook.yml -f 10

完整的playbook脚本示例

1
2
3
4
5
6
7
8
9
最基本的playbook脚本分为三个部分:
在什么机器上以什么身份执行
hosts
users
...
执行的任务是都有什么
tasks
善后的任务都有什么
handlers

这里我写了个tomcat发布,yml文件:
参考:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
- hosts: tomcat-system_01
environment:
LC_ALL: zh_CN.UTF-8
LANG : zh_CN.UTF-8
tasks:
- name : cpfile-system
copy : src=/root/.jenkins/workspace/yjk_master/haozhuo/haozhuo-system/target/haozhuo-system.war dest=/root/java_war/haozhuo-system.war
- name : restart
shell : /root/update/system.sh
async : 0
- name : shutdown
shell : /srv/tomcat/tomcat_system/bin/shutdown.sh
async : 0
- name : start
shell : chdir=/srv/tomcat/tomcat_system/bin nohup ./startup.sh &
async : 0

参考官网:https://ansible-book.gitbooks.io/ansible-first-book/content/playbookji_ben_yu_fa.html