/etc/ansible/roles
├── nginx.yml
# 最终执行的yml文件,以role功能调用roles目录下的nginx角色中的所有main.yml
└── nginx
├── defaults
├── files
│ ├── nginx # nginx启动脚本
│ └── nginx-1.11.1.tar.gz # nginx安装包
├── handlers
│ └── main.yml # 写了nginx的启动yml语句
├── meta
├── tasks
│ ├── evir.yml # 做软链并创建程序用户的yml语句
│ ├── install.yml # 源码编译安装的yml语句
│ ├── main.yml # 用来调用tasks目录中的三个yml文件的顺序
│ └── script.yml # 复制nginx脚本的yml语句
├── templates
└── vars
└── main.yml # 所有nginx目录下的yml语句中使用的变量
上篇文章中写到的playbook使用yml文件来写入一大篇的执行任务,但是在日常的主机管理中,希望一些任务是可以被重复调用的,所以需要重新组织这些文件。
基本上使用include
语句引用task文件的方法,可允许你将一个配置策略分解到更小的文件中。使用include
语句引用的tasks是将tasks从其他文件拉取过来。因为handlers
也是tasks,所以你也可以使用include
语句去引用handlers
文件
Playbook同样可以使用include
引用其他yml文件中的task。这时被引用的task会插入当前的yml文件中来执行,当前的yml文件中就有了一个更长的task列表
可以从理解如何使用include
开始,这样会更容易理解roles的概念。
需要单独在主控端,写一个nginx启动脚本和php测试页面,用来传文件,nginx用copy,php用模板,用copy也行
[root@localhost ~]# vim nginx.yml
- hosts: dbserver
remote_user: root
tasks:
- name: install nginx
unarchive: src=/root/nginx-1.11.1.tar.gz dest=/usr/src
- name: yum install pcre* openssl*
yum: name=pcre-devel,openssl-devel,gcc,gcc-c++,zlib-devel
- name: make install nginx
# 以下表示进行shell操作时,先进入/usr/src/nginx-1.11.1目录
shell: ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-pcre && make && make install
args:
chdir: /usr/src/nginx-1.11.1
- name: lnfile
file: src=/usr/local/nginx/sbin/nginx dest=/usr/local/sbin/nginx state=link
- name: create nginx user
user: name=nginx create_home=no shell=/sbin/nologin state=present
- name: nginx start script
copy: src=/root/nginx dest=/etc/init.d/nginx
- name: xp
file: path=/etc/init.d/nginx mode=0755
- name: add system service
shell: chkconfig --add nginx
- name: open system auto started
shell: systemctl enable nginx
- name: start nginx
service: name=nginx state=started
[root@localhost ~]# ansible-playbook nginx.yml
ansible:提高效率的工具,实现自动化运维
自动化:系统自动化(PXE+KS/PXE+COBBLER)
程序自动化(Ansible/Saltstack/Puppet)
代码自动化(Jenkins)