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

用-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值来设置变量

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/460954.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024.02.08

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this);this->setWindowIcon(QIcon(":/zh.png"));ui->lineEdit->setPlaceholderText("账号/手…

vue3集成bpmn

文章目录 前言一、依赖二、汉化配置1.引入文件2.样式文件 总结 前言 vue3 集成bpmn 配置工作流 一、依赖 "bpmn-js": "^7.3.1", "bpmn-js-properties-panel": "^0.37.2", "bpmn-moddle": "^6.0.0", "camu…

手把手教你玩转蓝牙模块(原理+驱动)

head: title: 手把手教你玩转蓝牙模块(原理驱动) description: 手把手教你玩转蓝牙模块(原理驱动) 作为嵌入式开发工程师,蓝牙模块怎能少呢? 蓝牙模块广泛应用在各种电子器件,比如手机、蓝牙耳…

安全技术和防火墙

安全技术 防火墙:防止外面进来,帮忙过滤筛选流量 防水墙:防止从里面出去 防火墙的分类 按保护范围分类 1.主机防火墙(服务范围为当前一台主机) 2.网络防火墙(服务范围为防火墙一侧的局域网) 按…

Linux---线程

线程概念 在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列” 一切进程至少都有一个执行线程 线程在进程内部运行,本质是在进程地址空间内运行 在Linux系统中,在CPU眼中…

【C++】友元、初始化列表、内部类、static修饰成员详解

文章目录 前言1. 构造函数不为人知的那些事1.1 构造函数体赋值1.2 初始化列表1.3 explicit关键字 2. static成员2.1 概念2.2 特性2.3 小总结 3. C11 成员变量初始化新用法4. 友元4.1 友元函数4.2 友元类 5. 内部类5.1概念及特性 总结 前言 提示:这里可以添加本文要…

Springboot+vue的社区智慧养老监护管理平台设计与实现(有报告),Javaee项目,springboot vue前后端分离项目

演示视频: Springbootvue的社区智慧养老监护管理平台设计与实现(有报告),Javaee项目,springboot vue前后端分离项目 项目介绍: 本文设计了一个基于Springbootvue的前后端分离的社区智慧养老监护管理平台设…

ZigBee学习——在官方例程上实现串口通信

Z-Stack版本为3.0.2 IAR版本为10.10.1 文章目录 一、添加头文件二、定义接收缓冲区三、编写Uart初始化函数四、编写串口回调函数五、函数声明六、函数调用七、可能遇到的问题(function “halUartInit“ has no prototype) 以下所有操作都是在APP层进行,也就是这个文…

【GAMES101】Lecture 19 透镜

目录 理想的薄透镜 模糊 利用透镜模型做光线追踪 景深(Depth of Field) 理想的薄透镜 在实际的相机中都是用的一组透镜来作为这个镜头 这个因为真实的棱镜无法将光线真正聚焦到一个点上,它只能聚在一堆上 所以方便研究提出了一种理想化的…

复旦大学NLP团队发布86页大模型Agent综述

复旦大学自然语言处理团队(FudanNLP)发布了一篇长达86页的综述论文,探讨了基于大型语言模型的智能代理的现状和未来。该论文从AI Agent的历史出发,全面梳理了基于大型语言模型的智能代理现状,包括LLM-based Agent的背景…

【lesson48】进程通信之system V(信号量)

文章目录 信号量理解 信号量理解 为了进程通信—>我们需要让不同的进程看到同一份资源---->我们之前讲的所有通信方式,本质都是优先解决一个问题:让不同的进程看到同一份资源。 让不同的进程看到了同一份资源,但是也带来了一些问题&a…

2024年【广东省安全员B证第四批(项目负责人)】考试及广东省安全员B证第四批(项目负责人)考试题

题库来源:安全生产模拟考试一点通公众号小程序 广东省安全员B证第四批(项目负责人)考试考前必练!安全生产模拟考试一点通每个月更新广东省安全员B证第四批(项目负责人)考试题题目及答案!多做几…