• Linux——ansible剧本


    剧本(playbook)

    现在,可以写各种临时命令

    但如果,想把所有步骤,集合到一起,写到同一个文件里

    让ansible自动按顺序执行

    就必须要写“剧本”

    剧本里面,也可以写临时命令,但是剧本有规范的文本格式

    一个剧本里(playbook)

    1.可以写多个“剧集”,每一集是一个“play”

    2.每个play里

      指明,对哪些客户机操作,操作什么,顺序

    具体格式

    1.整个playbook开头,顶头写:---(三个横杠,没有空格)

    2.往后退一层/一级,play的标题/名字

    顶头写:一个横杠一个空格name冒号名字

    ---

    - name: xxxxxxx

    3.再往下

    和上面一行的name对其

    文件名,以“.yml”结尾

    如果写完了playbook,让ansible执行:

    #ansible-playbook  xxx.yml

    可以在执行前,进行“格式检查”,不是运行检查,只检查剧本的格式

    #ansible-playbook  --syntax-check  xxx.yml

    空运行

    演练、彩排?

    能看到剧本执行的过程、流程、预期结果

    来看一些例子(用法)

    先来盘点一下,现在能写出来的,以及涉及到的

    剧本内容->模块

    yum或dnf模块

      管理软件包

      可以安装软件包,卸载软件包,更新软件包

    于是,就会有个小问题,看上面的例子

    用yum模块,指定了俩软件包httpd和firewalld

    并没写类似与install之类的选项,默认就是安装?

    其实,看最后state

    也就是说,要通过yum,保证上面列出的两个软件包,处于哪个状态……

    比如

    present保证存在,absent确保不存在

    这俩选项,比较通用,不光在yum模块里用到

    对于yum模块,还有一个latest,确保存在并且是最新版本

    再比如下面这个

    copy这个模块,通常用来传文件

    但是,看上面的例子,也可以直接把文本内容传进目标文件

    于是~给客户机生成文件,就有多种方式

    比如

    copy把整个文件,传过去

    copy把内容传过去

    lineinfile确保目标文件里有某一行内容

    继续

    关于服务

    Linux->软件包->执行->持续执行->守护进程->服务

    可用的模块:service和systemd

    state和enabled,分别管理一个服务的当前状态和开机启动设置

    再然后,关于防火墙

    主要是firewalld,不是iptables(是别的玩意)

    首先是防火墙自己也是个服务

    需要放行,每一个业务相关的其他服务

    service、state

    接下来两个不太一样

    immediate,立即生效

    permanent,永久生效(写入配置文件)

    有了各个部分的内容,包括

    安装软件、文件生成、服务启动、防火墙放行

    再然后,需要安排什么事情?

    需要编排剧本里每个部分的大顺序以及小顺序

    解决方法……

    1.停止服务,分别对a和b做

      0)可以一个playbook里,写两个play

         这两个play,分别写自己的hosts,各自包含servera和serverb

      1)用service模块或systemd

      2)name里包含httpd、mysqld

         name里包含nginx

    2.停止服务后,原来的配置文件和工作目录的文件,都还在

      0)这些文件,是否还要保留?

         关于配置文件的备份,可以在服务器本机,也可以放到远程的其他主机

         如果要有文件的备份,通常,在服务部署时就会备份一次

         至于其他时候的备份,就得按照企业的计划……

      1)如果不需要考虑文件的备份,可以直接删除软件包

         探索一个问题:通过yum或dnf安装的软件包,修改了配置文件……

                       在停止服务并且删除软件包后,配置文件还在不在?

    3.卸载软件包

      1)模块:yum或dnf

      2)state就变成了absent,也就是确保指定的软件未安装

    4.在指定的文件里,添加一行内容,不影响原有内容

      1)copy也可以,lineinfile也可以

      2)还可以?

         用command模块,执行临时命令(但是,不能保证幂等性)

  • 相关阅读:
    【重铸Java根基】Java中的IO基础知识
    如何解决分布式Session共享的问题
    EMI/EMS/EMC有何异同之处?-唯样商城
    Android - Application
    ​如何使用ArcGIS Pro制作一张地形图
    java虚拟机详解篇十三(本地方法栈)
    Spring Security: 整体架构
    node.js异步模型插入万条excel数据,为了不搞挂系统怎么办?
    公共数据这座金矿,授权运营为何是赋能的关键路径?
    抗原检测统计小程序
  • 原文地址:https://blog.csdn.net/Xinan_____/article/details/139675908