Ansible实践篇(二):Ansible常用系统模块:ping、command、copy、yum、file、user,ansibleyum


Ansible实践篇(二):Ansible常用系统模块:ping、command、copy、yum、file、user

一、Ansible ping模块

Ansible最基础的模块是ping模块,主要用于判断远程客户端是否在线,用于ping本身服务器,返回值是changed、ping

使用Ansible ping服务器状态,代码为ansible -k all -m ping

因为我的ansible服务器已经做了免密登录,所以不用到-k参数,关于ansible的各个参数在ansible原理篇里详解

结果如下:

二、Ansible command模块

Ansible command模块是Ansible默认模块,主要用于执行Linux基础命令,可以执行远程服务器命令执行、任务执行等操作。
但command模块不支持变量、重定向、管道符等,这些操作需要用shell模块执行
command模块使用详解:

  • chdir:执行命令前,切换到目录
  • creates:当该文件存在时,不执行该步骤
  • executable:切换shell来执行命令,需要使用命令的绝对路径
  • free_from:需要执行的脚本,一般使用Ansible的-a参数代替。
  • removes:当该文件不存在时,不执行该步骤
  • warn:如果在ansible.cfg中存在告警,如果设定了false,不会告警该行

(1)chdir示例
命令格式为ansible IP(可使用正则表达式) [-i hosts文件地址][-m module_name] -a module_args
如果hosts文件里面没有指定密码,还要使用-k参数

(2)creates示例
某一文件存在时,不执行命令[不知道为什么有warning。。。]

三、Ansible copy模块

Ansible copy模块主要用于文件或者目录复制,支持文件、目录、权限、用户组功能
copy模块使用详解:

  • src:Ansible端源文件或者目录,空目录不复制
  • content:用来替代src,用于将指定文件的内容复制到远程文件内
  • dest:客户端目标目录或者文件,需要绝对路径
  • backup:复制之前,先备份远程节点上的原始文件
  • directory_mode:用于复制目录,新建的文件会被复制,而旧的不会被复制
  • follow:支持link文件复制
  • force:覆盖远程主机不一致的内容
  • group:设定远程主机目录的组名
  • mode:设定远程主机文件及目录的权限
  • owner:设定远程主机目录的用户名

Ansible copy模块示例:
(1)Ansible copy模块操作,src表示源文件,dest表示目标目录或文件,owner指定拥有者
代码示例为:ansible IP -m copy -a 'src=/etc/passwd dest=/tmp mode=755 owner=root'
结果为:

(2)connect表示文件内容,dest表示目标文件,owner表示指定拥有者
代码示例为ansible IP -m copy -a 'content="HELLO" dest=/mnt/haha.txt mode=755 owner=root'

结果为:

(3)connect表示文件内容,dest表示目标文件,owner指定拥有者,backup=yes开启备份
代码示例为:ansible IP -m copy -a 'content="HAHA" dest=/mnt/haha.txt backup=yes mode=755 owner=root'
结果为:

四、Ansible yum模块

Ansible yum模块主要用于软件的安装、升级、卸载,支持rpm软件包的管理
yum模块使用详解:

  • conf_file:设置远程yum执行时所依赖的yum配置文件
  • disable_gpg_check:安装软件包之前是否检查gpg key
  • name:需要安装的软件名称,支持软件组安装
  • update_cache:安装软件之前更新缓存
  • enablerepo:指定repo源名称
  • skip_broken:跳过异常软件节点
  • state:软件包状态,包括installed、present、latest、absent、removed
    • present, installed是指安裝套件,而latest指安裝最新的套件,也就是使用 yum mirror 上最新的版本。
    • absent, removed 没有什么区别

Ansible yum模块示例:
(1)name表示需要安装的软件名称,state表示状态,常见state=installed表示安装软件
示例代码为:ansible IP -m yum -a 'name=xxx state=installed'
结果为:

(2)state=absent表示卸载软件

(3)disable_gpg_check=no表示不检查key

六、Ansible user模块

Ansible user模块主要用于操作系统用户、组、权限、密码等操作
user模块使用详解:

  • system:默认创建为普通用户,为yes则创建系统用户
  • append:添加一个新的组
  • comment:添加描述信息
  • createhome:给用户创建家目录
  • force:强制删除用户
  • group:创建用户主组
  • groups:将用户加入组或者附属组添加
  • home:指定用户的家目录
  • name:表示状态,是否create、remove、modify
  • password:指定用户的密码,为加密密码
  • remove:删除用户
  • shell:设置用户的shell登录环境
  • uid:设置用户ID
  • update_password:修改用户密码
  • state:用户状态,默认为present,表示新建用户

user模块示例
(1)name表示用户名称,home表示家目录
示例代码为:ansible 172.25.70.1 -m user -a "name=lcl home=/tmp/"
结果为:

(2)name表示用户名称,home表示家目录并指定shell
示例代码为:ansible 172.25.70.1 -m user -a "name=lcl home=/tmp/ shell=/sbin/nologin"
结果为:

(3)state=absent表示删除用户
示例代码为:ansible 172.25.70.1 -m user -a "name=lcl state=absent force=yes"
结果为:

相关内容

    暂无相关文章