10.Python之Ansible自动化运维常用模块

Ansible工作原理:

1.管理端支持local 、ssh、zeromq 三种方式连接被管理端,默认使用基于ssh的连接

2.可以按应用类型等方式进行Host Inventory(主机群)分类,管理节点通过各类模块实现相应的操作---单个模块,单条命令的批量执行,我们可以称之为ad-hoc;

3.管理节点可以通过playbooks 实现多个task的集合实现一类功能,如web服务的安装部署、数据库服务器的批量备份等。playbooks我们可以简单的理解为,系统通过组合多条ad-hoc操作的配置文件 。

Ansible配置文件:

Ansible免密登陆:

ansible使用ssh登录,所以要在两者之间配置秘钥登录,这样才能开始正常的工作

实现了master与其他节点之间的连接

介绍一下Ansible命令:

  • 功能:通过ssh实现配置管理、应用部署、任务执行等功能
  • 建议:配置ansible端能基于密钥认证的方式联系各被管理节点
  • 格式:ansible
  • 常用选项:

这里主要讲一下

Ansible执行命令过程:

  • 加载自己的配置文件 默认/etc/ansible/ansible.cfg

  • 加载自己对应的模块文件,如command

  • 通过ansible将模块或命令生成对应的临时py文件,并将该文件传输至远程服务器的对应执行用户

  • $HOME/.ansible/tmp/ansible-tmp-数字/XXX.PY文件

  • 给文件+x执行

  • 执行并返回结果

  • 删除临时py文件,sleep 0退出

Ansible命令工具:

  • ansible主程序,临时命令执行工具

  • ansible-doc 查看配置文档,模块功能查看工具

  • ansible-galaxy 下载/上传优秀代码或Roles模块的官网平台

  • ansible-playbook 定制自动化任务,编排剧本工具

  • ansible-pull 远程执行命令的工具

  • ansible-vault 文件加密工具

  • ansible-console 基于Console界面与用户交互的执行工具

Ansible常用模块:

ansible 默认提供了很多模块来供我们使用。在 Linux 中,我们可以通过 ansible-doc -l 命令查看到当前 ansible 都支持哪些模块,通过 ansible-doc -s 模块名 又可以查看该模块有哪些参数可以使用。

这里主要介绍Ansible常用模块:

1.ping模块

检查指定节点机器是否还能连通,用法很简单,不涉及参数,主机如果在线,则回复pong

2.yum 安装包模块

参数详解:

  • config_file:yum的配置文件 (optional)

  • disable_gpg_check:关闭gpg_check (optional)

  • disablerepo:不启用某个源 (optional)

  • enablerepo:启用某个源(optional)

  • name:要进行操作的软件包的名字,默认最新的程序包,指明要安装的程序包,可以带上版本号,也可以传递一个url或者一个本地的rpm包的路径

  • state:状态(present,absent,latest),表示是安装还卸载
    present:默认的,表示为安装
    lastest: 安装为最新的版本
    absent:表示删除

3.copy 复制文件模块

参数详解:

  • update_cache: 更新缓存

  • name: 要创建的文件名字

  • state: 状态(present,absent,latest),表示是安装还卸载
    present:默认的,表示为安装
    lastest: 安装为最新的版本
    absent:表示删除

  • mode: 目标文件的权限模式,模式可以被指定为符号模式(例如,u + rwx 或 u = rw,g = r,o = r)

  • backup: 如果原目标文件存在,则先备份目标文件

  • force: 是否强制覆盖,默认为yes

  • owner: 目标文件属主

  • group: 目标文件属组

4.file 文件操作模块

参数详解:

  • force:需要在两种情况下强制创建软链接,一种是源文件不存在但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes|no

  • group:定义文件/目录的属组

  • mode:定义文件/目录的权限

  • owner:定义文件/目录的属主

  • path:必选项,定义文件/目录的路径

  • recurse:递归的设置文件的属性,只对目录有效

  • src:要被链接的源文件的路径,只应用于state=link的情况

  • dest:被链接到的路径,只应用于state=link的情况

  • state:
    directory:如果目录不存在,创建目录
    file:即使文件不存在,也不会被创建
    link:创建软链接
    hard:创建硬链接
    touch:如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间
    absent:删除目录、文件或者取消链接文件

5.service 管理服务模块

参数详解:

  • arguments:给命令行提供一些选项

  • enabled:是否开机启动 yes|no, 要求状态(state)和启用(enabled)中至少有一个。

  • name:必选项,服务名称

  • runlevel:运行级别

  • sleep:如果执行了restarted,在则stop和start之间沉睡几秒钟

  • state:对当前服务执行启动,停止、重启、重新加载等操作(started,stopped,restarted,reloaded)

6.user 管理用户模块

参数详解:

  • home:指定用户的家目录,需要与createhome配合使用。

  • groups:指定用户的属组。

  • uid:指定用的uid。

  • password:指定用户的密码。
    注意:指定password参数时,不能使用明文密码,因为后面这一串密码会被直接传送到被管理主机的/etc/shadow文件中,所以需要先将密码字符串进行加密处理。然后将得到的字符串放到password中即可。

  • name:指定用户名。

  • createhome:是否创建家目录 yes|no。

  • system:是否为系统用户。

  • remove:当state=absent时,remove=yes则表示连同家目录一起删除,等价于userdel -r。

  • state:是创建还是删除。(present,absent)

  • shell:指定用户的shell环境。

  • generate_ssh_key:是否为相关用户生成SSH密钥。 这不会覆盖现有的SSH密钥。

  • ssh_key_bits:可选择指定要创建的SSH密钥中的位数。

  • ssh_key_passphrase:设置SSH密钥的密码。 如果没有提供密码,SSH密钥将默认没有密码。

  • ssh_key_file:指定SSH密钥文件名(可选)。 如果这是一个相对的文件名,那么它将是相对于用户的主目录。

  • ssh_key_type:指定要生成的SSH密钥的类型(可选)。 可用的SSH密钥类型将取决于目标主机上的实现。

7.group管理组模块

参数详解:

  • gid:指定用的gid。

  • name:指定用户名。

  • state:是创建还是删除。(present,absent)

  • system:如果是,则表示创建的组是系统组。

8.cron 计划任务模块

支持时间:minute,hour,day,month,weekday

9.template模块

基于模板方式生成一个文件复制到远程主机(template使用Jinjia2格式作为文件模版,进行文档内变量的替换的模块。它的每次使用都会被ansible标记为”changed”状态。)

参数详解:

  • backup: 如果原目标文件存在,则先备份目标文件

  • src:在ansible控制器上的Jinja2格式化模板的路径。 这可以是相对或绝对的路径。

  • dest:将模板渲染到远程机器上的位置。

  • force:是否强制覆盖,默认为yes

  • owner:目标文件属主

  • group:目标文件属组

  • mode:目标文件的权限模式,模式可以被指定为符号模式(例如,u + rwx或u = rw,g = r,o = r)。

10.setup模块

收集指定服务器的信息,每个被管理节点在接收并运行管理命令之前,会将自己主机相关信息,如操作系统版本、IP地址等报告给远程的ansbile主机。在playbooks里经常会用到的一个参数gather_facts就与该模块相关。setup模块下经常使用的一个参数是filter参数,具体使用示例如下:

这里给出filter常用可选项:

ansible_all_ipv4_addresses:仅显示ipv4的信息

ansible_devices:仅显示磁盘设备信息

ansible_distribution:显示是什么系统,例:centos,suse等

ansible_distribution_major_version:显示是系统主版本

ansible_distribution_version:仅显示系统版本

ansible_machine:显示系统类型,例:32位,还是64位

ansible_eth0:仅显示eth0的信息

ansible_hostname:仅显示主机名

ansible_kernel:仅显示内核版本

ansible_lvm:显示lvm相关信息

ansible_memtotal_mb:显示系统总内存

ansible_memfree_mb:显示可用系统内存

ansible_memory_mb:详细显示内存情况

ansible_swaptotal_mb:显示总的swap内存

ansible_swapfree_mb:显示swap内存的可用内存

ansible_mounts:显示系统磁盘挂载情况

ansible_processor:显示cpu个数(具体显示每个cpu的型号)

ansible_processor_vcpus:显示cpu个数(只显示总的个数)

ansible_python_version:显示python版本

11.fetch 从客户端取文件至服务器端

常用参数:

  • src:远程系统上要获取的文件。 这必须是一个文件,而不是一个目录。 后续版本可能会支持递归提取。

-dest:保存文件的目录。 例如,如果dest目录是/backup,在主机host.example.com上命名为/ etc/profile的src文件将被保存到/backup/host.example.com/etc/profile。

  • flat:允许您覆盖将目标文件添加到主机名/ path / to / file的默认行为。

12.apt安装包模块

参数详解:

  • deb: 用于安装远程机器上的.deb后缀的软件包(optional)

  • install_recommends:这个参数可以控制远程电脑上是否只是下载软件包,还是下载后安装,默认参数为true,设置为false的时候只下载软件包,不安装

  • update_cache: 当这个参数为yes的时候等于apt-get update(optional)

  • name: apt要下载的软件包名字,支持name=git=1.6 这种制定版本的模式

  • state:状态(present,absent,latest),表示是安装还卸载
    present:默认的,表示为安装
    lastest: 安装为最新的版本
    absent:表示删除

13.command模块

command 模块可以帮助我们在远程主机上执行命令,默认模块,可忽略-m选项

注意:

  • 使用 command 模块在远程主机中执行命令时,不会经过远程主机的 shell 处理。

  • 在使用 command 模块时,如果需要执行的命令中含有重定向、管道符等操作时,这些符号也会失效,比如”这些符号,如果你需要这些功能,可以参考后面介绍的 shell 模块。

  • 如果远程节点是 windows 操作系统,则需要使用win_command 模块

14.shell模块,和command相似,用shell执行命令

shell 模块可以帮助我们在远程主机上执行命令。与 command 模块不同的是,shell 模块在远程主机中执行命令时,会经过远程主机上的/bin/sh 处理。

使用 shell 模块可以在远程服务器上执行命令,它支持管道与重定向等符号

15.script模块

script 模块可以帮助我们在远程主机上执行 ansible 管理主机上的脚本,也就是说,脚本一直存在于 ansible 管理主机本地,不需要手动拷贝到远程主机后再执行。

Original: https://www.cnblogs.com/bmjoker/p/10694444.html
Author: bmjoker
Title: 10.Python之Ansible自动化运维常用模块

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/15753/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

发表回复

登录后才能评论
免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部