ansible通过playbook批量部署服务

ansible通过playbook批量部署服务
 

一、对单机和组的执行playbook配置命令

1、对单台服务器执行playbook:

在单台服务器172.20.26.198上安装nginx,启动nginx。

vim nginx.yml   #编写剧本

---

- hosts: 172.20.26.198

  remote_user: root

  tasks:

    - name: auto install nginx

      yum: name=nginx state=installed(默认状态为installed,可以忽略不写)

ansible通过playbook批量部署服务_第1张图片

用-C测试剧本语法是否有问题:

ansible-playbook -C nginx.yaml

ansible通过playbook批量部署服务_第2张图片

没有报错,语法没有问题,

172.20.26.198上目前没有安装nginx

在172.20.26.167上执行yml文件

ansible-playbook nginx.yml

ansible通过playbook批量部署服务_第3张图片

ansible通过playbook批量部署服务_第4张图片

在172.20.26.198服务器上通过yml剧本安装nginx成功。

我们也可以在yml剧本中添加启动nginx服务

vim nginx.yml

ansible通过playbook批量部署服务_第5张图片

检查yml语法是否正确

ansible-playbook -C nginx.yml

ansible通过playbook批量部署服务_第6张图片

ansible通过playbook批量部署服务_第7张图片

Nginx 服务已启动

ansible通过playbook批量部署服务_第8张图片

2、对nginx组执行playbook:对nginx组都安装nginx服务,并启动服务。

vim nginx.yml

ansible通过playbook批量部署服务_第9张图片

ansible通过playbook批量部署服务_第10张图片

在nginx主机组的服务器上检查nginx的安装和启动状态

ansible通过playbook批量部署服务_第11张图片

3、对nginx组执行playbook:对nginx组安装nginx、redis服务,并启动服务。

---

- hosts: nginx

  remote_user: root

  tasks:

    - name: auto install nginx and redis

      yum: name=nginx,redis

    - name: start nginx and redis

      service: name={{ item }} state=started

      with_items:

        - nginx

            - redis

ansible通过playbook批量部署服务_第12张图片

ansible通过playbook批量部署服务_第13张图片

在nginx主机组的服务器上检查nginx、redis安装和启动状态

ansible通过playbook批量部署服务_第14张图片

ansible通过playbook批量部署服务_第15张图片

4、变量(playbook定义变量):安装httpd、vsftpd服务

---

- hosts: nginx

  remote_user: root

  vars:

    - app1: httpd

    - app2: vsftpd

  tasks:

    - name: auto install {{ app1 }} and {{ app2 }}

      yum: name={{ app1 }},{{ app2 }}

    - name: start {{ app1 }} and {{ app2 }}

      service: name={{ item }} state=started

      with_items:

        - "{{ app1 }}"

            - "{{ app2 }}"

ansible通过playbook批量部署服务_第16张图片

我们前面已安装过nginx,由于nginx 与httpd 都绑定80端口,所以这里可以先将nginx 服务stop掉

ansible-playbook nginx.yml

ansible通过playbook批量部署服务_第17张图片

ansible通过playbook批量部署服务_第18张图片

ansible通过playbook批量部署服务_第19张图片

二、通过playbook批量源码部署nginx,并实现配置文件替换,启动服务

在/etc/ansible/主目录下创建templates目录,将之前的nginx.conf 文件拷贝到templates目录下/etc/ansible/templates/

通过ansible对远程服务器进行CPU数据采集,我们172.20.26.198服务器的CPU个数是1个,172.20.26.24服务器的CPU个数是4个,

ansible nginx -m setup | grep cpu

ansible通过playbook批量部署服务_第20张图片

修改nginx.conf配置

将配置文件中的worker_processes 后面的1或者2或者auto 修改为ansible采集CPU的变量名“ansible_processor_vcpus”

ansible通过playbook批量部署服务_第21张图片

将nginx-1.18.0.tar上传到/usr/src目录下

ansible通过playbook批量部署服务_第22张图片

vim nginx.yml

---

- hosts: nginx

  remote_user: root

  tasks:

    - name: copynginx package

      copy: src=/usr/src/nginx-1.18.0.tar.gz dest=/usr/src/

      tags: cppkg

    - name: tar-nginx

      shell: cd /usr/src/;tar -zxf nginx-1.18.0.tar.gz

    - name: installpakger

      yum: name=pcre-devel,zlib,zlib-devel,gcc,gcc-c++,openssl-devel state=installed

    - name: configure

      shell: cd /usr/src/nginx-1.18.0 && ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre

    - name: make and make install

      shell:  cd /usr/src/nginx-1.18.0 && make && make install

    - name: start nginx

      shell: /usr/local/nginx/sbin/nginx

    - name: modify nginx conf

      template: src= /etc/ansible/templates/nginx.conf dest=/usr/local/nginx/conf/

      tags: nginxconf

      notify: reload nginx

  handlers:

    - name: reload nginx

      shell: /usr/local/nginx/sbin/nginx -s reload

ansible-playbook -C nginx.yml   检查nginx.yml 语法情况

ansible通过playbook批量部署服务_第23张图片

ansible-playbook nginx.yml   #执行playbook命令

ansible通过playbook批量部署服务_第24张图片

要确保远程服务器对所要安装的服务所使用的端口不被占用。

测试nginx.conf 文件是否被成功修改

ansible通过playbook批量部署服务_第25张图片

ansible通过playbook批量部署服务_第26张图片

ansible-playbook nginx.yml

ansible通过playbook批量部署服务_第27张图片

vim /usr/local/nginx/conf/nginx.conf   #查看远程服务器nginx配置文件进程数

ansible通过playbook批量部署服务_第28张图片

ansible通过playbook批量部署服务_第29张图片

查看远程服务器nginx 端口及进程服务

ansible通过playbook批量部署服务_第30张图片

ansible通过playbook批量部署服务_第31张图片

ansible通过playbook批量部署服务_第32张图片

ansible通过playbook批量部署服务_第33张图片

完成通过playbook批量源码部署nginx,并实现配置文件替换,启动服务。

也可以根据ansible采集远程服务器的hostname值来设置变量

ansible通过playbook批量部署服务_第34张图片

你可能感兴趣的:(Linux运维,ansible,linux,apache)