本文介绍: ansible通过playbook批量部署服务一、 对单机和组的执行playbook配置命令二、通过playbook批量源码部署nginx,并实现配置文件替换,启动服务

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,可以忽略不写)

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

ansible-playbook -C nginx.yaml

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

172.20.26.198上目前没有安装nginx

在172.20.26.167上执行yml文件

ansible-playbook nginx.yml

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

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

vim nginx.yml

检查yml语法是否正确

ansible-playbook -C nginx.yml

Nginx 服务已启动

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

vim nginx.yml

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

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

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

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 }}”

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

ansible-playbook nginx.yml

二、通过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

修改nginx.conf配置

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

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

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 nginx.yml   #执行playbook命令

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

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

ansible-playbook nginx.yml

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

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

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

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

原文地址:https://blog.csdn.net/lqcbj/article/details/136019872

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_67779.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注