Ansible用于大批量管理虚拟服务器,以下记录使用ansible远程控制部署nginx服务的全过程。
实验自然环境:
整个测试过程:
思路:先在152设备上编译程序,安装nginx,打包,然后用ansible发送到其他网络服务器上。
3.cdnginx_install
4.mkdir-proles/{common,install}/{handlers,files,meta,tasks,templates,vars}
显示在/etc/ansible/nginx_install目录下建立了一个roles目录,roles目录下有两个字符。常见的是提前准备的实际 *** 作,安装的是安装nginx的实际 *** 作。每个字符下面有几个目录。下面的处理程序是文件更改时要执行的实际 *** 作。一般情况下,当设备档案发生变化时,必须重新启动服务项目。Files是关键的设备档案,templates一般存储一些设备档案,启动脚本等模板文件,vars是定义的自变量。
5.要安装nginx服务项目,必须先安装依赖包:
CD/etc/ansible/nginx_install/roles
在通用目录的任务中定义main.yml脚本和安装依赖包。
维姆。/common/tasks/main.yml//包含以下内容:
- name: install initializtion require software yum: name={{ item }} state=installed with_items: - zlib-devel - pcre-devel - openssl-devel6.在/usr/local/nginx目录的nginx包中安装之前的源代码编译器:
cd/usr/local/
tarzcvfnginx.tar.gznginx/
7.在/etc/ansible/nginx_install/roles/install中,准备好安装nginx程序流的所有文件。
CD/etc/ansible/nginx_install/roles/install
CP/usr/local/nginx.tar.gzfiles/#打包的nginx
CP/usr/local/nginx/conf/nginx.conf模板的配备文件/#nginx
CP/etc/init.d/nginxtemplates/#nginx的启动脚本在之前安装的时候还得自己写。
、
8.然后,必须在install/vars目录中编写一个main.yml脚本来记录一些独立变量:
vim/etc/ansible/nginx_install/roles/install/vars/main.yml
ngx_user:www#nginx的客户,根据nginx.conf文件的定义,因为新设备上很可能没有nginx客户。
ngx_basedir:/usr/local/nginx#nginx的安装路径
9.然后,编写/etc/ansible/nginx_install/roles/install/tasks/copy.yml。
- name: Copy Nginx Software copy: src=nginx.tar.gz dest=/tmp/nginx.tar.gz owner=root group=root - name: Uncompression Nginx Software shell: tar zxf /tmp/nginx.tar.gz -C /usr/local - name: Copy Nginx Start Script template: src=nginx dest=/etc/init.d/nginx owner=root group=root mode=0755 - name: Copy Nginx Config template: src=nginx.conf dest={{ nginx_basedir }}/conf/ owner=root group=root mode=0644实现这个copy.yml文件,将本地ansible网络服务器打包的nginx包复制到远程控件。复制控制模块的默认目录路径是文件。因此,打包的nginx.tar.gz必须复制到files目录中。
复制nginx.tar.gz包后,copy.yml需要解压缩工具,复制启动文件,然后复制配置文件。
10.定义copy.yml文件后,必须定义安装脚本:
vim/etc/ansible/nginx_install/roles/install/tasks/install.yml
- name: Create Nginx User user: name={{ nginx_user }} state=present createhome=no shell=/sbin/nologin - name: Start Nginx Service service: name=nginx state=started - name: Add Boot Start Nginx Service shell: chkconfig --level 345 nginx on - name: Delete Nginx compression files shell: rm -rf /tmp/nginx.tar.gz在使用install.yml的脚本安装nginx的情况下,首先建立nginx的客户nginx_user,在vars目录中定义自变量。
然后,nginx被添加到服务项并启动。
然后,345级启动全部开启。
最后,删除安装包。
11.今天,两个关键。yml脚本已经定义好了,但是nginx的远程控制安装无法完成。现在还必须在roles/install/tasks/目录下写一个main.yml的通道文件,统一管理copy.yml和install.yml的文件。
vim/etc/ansible/nginx_install/roles/install/tasks/main.yml//包含以下内容:
- include: copy.yml - include: install.yml包括copy和install2文件。
现在,角色下的两个角色common和install已经准备好了。
然而,要完成nginx的ansible-playbook,需要一个通用的通道文件。
vim/etc/ansible/nginx__install/install.yml//包含以下内容:
--- - hosts: web155.com remote_user: root gather_facts: True roles: - common - install看这个install.yml文件的结构,hosts是远程控制的主发电机组的名字,最重要的是定义角色控制模块。执行ansible-playbook时,会在角色中搜索common和install,然后在common和install的角色中,分别搜索它们的main.yml通道文件。根据main.yml文件,可以找到copy.yml和install.yml文件。
实现ansible-playbook/etc/ansible/nginx_install/install.yml。
然后在另一个设备192.168.38.155的检测器中:
Psaux|grepnginx#检查nginx服务中的一切是否已经正常启动,如果是,一切都已经正常安装。
以上是使用ansible远程控制部署nginx的实用思路。
我进行测试的设备上的/etc/ansible/nginx_install/目录的结构:
[root@master nginx_install]# pwd /etc/ansible/nginx_install [root@master nginx_install]# tree . ├── install.yml └── roles ├── common │ ├── files │ ├── handlers │ ├── meta │ ├── tasks │ │ └── main.yml │ ├── templates │ └── vars ├── delete │ ├── files │ ├── handlers │ ├── meta │ ├── tasks │ ├── templates │ └── vars └── install ├── files │ ├── nginx-1.6.2.tar.gz │ └── nginx.tar.gz ├── handlers ├── meta ├── tasks │ ├── copy.yml │ ├── install.yml │ └── main.yml ├── templates │ ├── nginx │ └── nginx.conf └── vars └── main.yml欢迎分享,转载请注明来源:内存溢出
评论列表(0条)