ansible 自动化运维工具 4 (playbook 编写、playbook基本示例)

一、playbook简介

  • Ansible实现管理的方式包括:
    Ad-Hoc: 利用ansible命令直接完成管理,主要用于临时命令使用场景。
    playbook: ansible脚本,主要用于大型项目场景,需要前期的规划,playbook是由一个或多个play组成的列表,使用YAML来编写。

  • playbook是 一个不同于使用Ansible命令行执行方式的模式,其功能更强大灵活。简单来说,playbook是一个非常简单的配置管理和多主机部署系统,不同于任何已经存在的模式,可作为一个适合部署复杂应用程序的基础。Playbook可以定制配置,可以按照指定的操作步骤有序执行,支持同步和异步方式。值得注意的是playbook是通过YAML格式来进行描述定义的。

  • Playbook的功能:
    playbook 是由一个或多个play组成的列表;
    Playboot 文件使用YAML来写的;
    特点:可读性好、和脚本语言交互性号、易于实现、适用程序执行流梳理方式、可扩展性强

  • YAML语法简介:

在文件中用[---]开始
在文件中用[...]结尾
次行一般书写文件内容
缩进严格
大小写敏感
key/value可以多行书写也可一行书写,一行书写用,隔开
value可以是个字符串,也可是list
一个play需要包括name和tasks
name 是描述
tasks 是动作
一个name只能包含一个task
扩展名称yml或者yaml
  • YAML列表
[Linux,C++,Java,Python]

-Linux
-C++
-Java
-Python
  • YAML字典:存放键值
    格式一:
name:test
hosts:westos1
tasks:

格式二:

{name: "test", hosts: "westos1", tasks: ""}
  • playbook常用参数:
参数含义
- -check/-C检测
- -syntax-checkcheck language
- -list-hosts列出hosts
- -list-tags列出tag
- -list-tasks列出task
- -limit指定执行主机
-v -vv现实过程
  • Playbook的核心组件
name	    可选,建议使用多用于说明
hosts 		受控主机列表
tasks 		任务,用与选择执行部分代码
  • vim 设定技巧
    autocmd FileType yaml setlocal ai ts=2 sw=2 et
设定含义
setlocal设定当前文件
ai自动退格对齐 auto indent
tstab建长度为2空格 tabstop=2
sw缩进长度为2 shiftwidth=2
et把tab键变成空格 expandtab

二、基本示例

接上节的debug模块:
Ansible 的 registers用来捕捉一个task的输出作为一个变量。在Ansible的其它地方我们可以使用该变量,这种变量包含了这个任务的返回值
var:将某个任务执行的输出作为变量传递给debug模块,debug会直接将其打印输出

---
- hosts: test  %单独主机/ 组 /多个组 /all都可
  tasks:
    - name: install apache %任务1
      yum:
        name: httpd
        state: present

    - name: start apache  %任务2
      service:
        name: httpd
        state: started

请添加图片描述
可以看到标准输出为hello
请添加图片描述
verbosity: debug的级别(默认是0级,全部显示),,可以看到只显示了一部分
请添加图片描述
将debug的级别设定为0级,全部显示
请添加图片描述
请添加图片描述
msg:调试输出的消息
请添加图片描述
将该任务执行的输出作为变量(test)传递给debug模块,debug会直接将其打印输出
请添加图片描述
想要输出指定的内容不能用下面格式
请添加图片描述
应使用debug模块的msg参数
请添加图片描述
或者如下格式,一个name只能包含一个task
请添加图片描述
设定一个tab=2个空格
请添加图片描述
输出信息
请添加图片描述
请添加图片描述
shell指令需要使用-v参数查看过程信息
请添加图片描述
请添加图片描述
请添加图片描述
也可以使用以下写法
请添加图片描述
在受控主机的/mnt目录下建立文件
请添加图片描述
成功建立
请添加图片描述

三、palybook示例

1.playbook基础

主机与用户:

---
- hosts: server2      		  //指定主机组,可以是一个或多个组,逗号分隔。
  remote_user: root                //指定远程主机执行的用户名
  ---
- hosts: webservers
  remote_user: root            
  become: yes                		//切换用户运行
  become_user: mysql          	//指定sudo用户为mysql

Tasks 列表

Play的主体部分是task列表,task列表中的各任务按次序逐个在hosts中指定的主机上执行,即在所有主机上完成第一个任务后再开始第二个任务。如果一个host执行task失败,整个tasks都会回滚。
每一个task必须有一个名称name,这样在运行playbook时,从其输出的任务执行信息中可以很好的辨别出是属于哪一个task的。

tasks:
    - name: install apache			//定义任务名

所有主机上完成第一个任务后再开始第二个任务。如果一个host执行task失败,整个tasks都会回滚。

使用ansible主机远程执行命令,在受控主机部署vsftpd,并且设置匿名用户可以登陆,重启动,加入到防火墙

安装vsftp:

---
- name: ftp install
  hosts: westos
  tasks:
    - name: dnf install        加-是因为区别每个动作
      dnf:                     安装部分
        name: vsftpd
        state: present

    - name: lineinfile
      lineinfile:                     修改文件部分
        path: /etc/vsftpd/vsftpd.conf
        regexp: "anonymous_enable=NO"
        line: "anonymous_enable=YES"
    
    - name: restart
      service:                         服务修改部分
        name: vsftpd
        state: restarted
        enabled: yes

    - name: firewalld
      firewalld:                        防火墙部分
        zone: public
        service: ftp
        permanent: yes
        state: enabled
        immediate: yes
...

请添加图片描述
执行playbook
请添加图片描述
测试,ftp成功安装
请添加图片描述

2.playbook执行命令

–check|-C :检测
–syntax-check :check language

请添加图片描述
–list-hosts :列出hosts
请添加图片描述
–list-tasks :列出task
请添加图片描述
请添加图片描述
执行playbook
请添加图片描述
详细过程
请添加图片描述
–limit :指定执行主机
请添加图片描述

3.shell加密工具shc的安装

shell脚本是可读写的, 很有可能会泄露敏感信息, 如用户名/密码/路径/IP等. 同样在shell脚本运行时会也泄露敏感信息。shc是一个加密shell脚本的工具, 它的作用是把shell脚本转换为一个可执行的二进制文件. 这就很好的解决了上述问题。

真机网上下载shc包,并传给westosb
请添加图片描述
请添加图片描述
node节点写一个脚本文件
请添加图片描述
node节点解压shc包,可以看到shc.c是一个指向shc-3.8.7.c(文本文件)的符号链接
请添加图片描述
安装gcc
请添加图片描述
1、gcc编译,选项-o用于指定要生成的结果文件,后面跟的就是结果文件名字。
o是output的意思,不是目标的意思。结果文件可能是预处理文件、汇编文件、目标文件或者最终可执行文件。
2、执行可执行文件shc
请添加图片描述
将可执行文件移到/bin目录(用于存放二进制文件)
请添加图片描述
-f 指定要解密的文件,-r 指定一种安全的加密方式(使用 RC4 加密算法,它能够把 shell 程序转换成二进制可执行文件 );
生成两个文件test.sh.x和test.sh.x.c,前者是动态链接的二进制可执行文件,后者相应的是C程序(脚本的源文件,可删除)。
请添加图片描述
可以看到二进制可执行文件被加密了,cat无法看到
请添加图片描述
执行可以显示解密后的输出
请添加图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值