Ansible(二)模块

============================================================================

文件相关模块

这部分模块开始模块中会有较多的选项。

---------------------------------------------------------

file模块

file模块不仅可以管理文件,还可以管理目录,管理软连接.

file模块相当于把touch命令,mkdir命令,rm命令,ln -s命令结合在一起了。

选项:

path:路径,必备选项;

src source源,源文件一般用于link(创建软连接模式) 用于指定源文件;

state

状态(模式) ,具体要做的什么,创建/删除,操作文件/操作目录

state=directory 创建目录

state=file (默认) 更新文件,如果文件不存在也不创建

state=link 创建软连接

state=touch 创建文件;

state state=absent 删除 ( 注意如果是目录递归删除目录. )

mode mode=755创建并修改权限

owner onwer=root

group group=root

案例05:创建/opt/lidao.txt

[root@m01 ~]# ansible all -m file -a 'path=/opt/haha.txt state=touch'

案例06: 创建目录/app/

[root@m01 ~]# ansible all -m file -a 'path=/app/a/b/c/d/e/g/ state=directory'

案例07: 创建软连接 /etc/hosts创建软连接到/opt/下

[root@m01 ~]# ansible all -m file -a 'path=/opt/hosts src=/etc/hosts state=link'

案例08: 创建/ans-backup/目录 所有者是mclind,权限是700

注:创建文件或目录的时候,修改权限,所有者

[root@m01 ~]# ansible all -m file -a 'path=/ans-backup/ owner=root group=root mode=700 state=directory'

案例09: 删除/oldboy/目录

---------------------------------------------------------

copy模块

批量分发:scp,1个节点(管理节点)发送文件或压缩包到所有被管理端,注意:copy是单向的传输

选项:

src source 源文件,管理端的某个文件.

dest destination 目标,被管理端的目录/文件.

backup backup=yes 则会在覆盖前进行备份,文件内容要有变化或区别.

mode 修改权限

owner 修改为指定所有者

group 修改为指定用户组

案例10: 分发书写好的/etc/hosts文件,如果文件存在则备份下:

[root@m01 ~]# ansible all -m copy -a 'src=/etc/hosts dest=/tmp/hosts'

注:

copy是推送,批量推送.

fetch是拉取,批量拉取.使用较少.

---------------------------------------------------------

lineinfile

修改配置文件使用,类似于sed -i 'sg'和sed 'cai',会有剧本里用;

---------------------------------------------------------

服务管理-systemd

systemd模块相当于是linux systemctl命令:

开启/关闭/重启服务

开机自启动;

选项:

name 用于指定服务名称

enabled yes开机自启动 (yes/no)

state

表示服务开,关,重启...

state=started 开启

state=stopped 关闭

state=reloaded 重读配置文件(服务支持)

state=restarted 重启(关闭再开启)

daemon-reload yes是否重新加载对应的服务的管理配置文件(未来讲解书写systemctl配置文件)

案例11: 开启crond服务并设置开机自启动.

案例12: 关闭firewalld服务并不让开机自启动

[root@m01 ~]# ansible all -m systemd -a 'name=crond enabled=yes state=started'

[root@m01 ~]# ansible all -m systemd -a 'name=firewalld enabled=no state=stopped'

[root@m01 ~]# ansible all -m systemd -a 'name=sshd enabled=yes state=reloaded/restarted'

注:

systemd模块适用于目前大部分的Linux系统.

service模块适用于管理旧的Linux系统

---------------------------------------------------------

软件管理,yum模块

get_url模块,wget命令

yum_repository模块yum源配置模块,未来可以通过copy模块分发配好的yum。

---------------------------------------------------------

yum模块并不只是yum命令,包含了yum/apt命令:

选项:

name 指定软件包名字,可以指定多个,通过","分割.

state

state=installed 安装(也可以写为present)(默认)

state=removed 删除 (也可以写为absent)

state=lastest 安装或更新

update_cache 可以设置为no加加速,表示不更新本地yum缓存.实际应用建议开启

案例13: 安装常用的软件htop,tree,lrzsz,sshpass

[root@m01 ~]# ansible all -m yum -a 'name=htop,tree,lrzsz,sshpass'

---------------------------------------------------------

get_url模块

相当于是wget命令.所有主机能访问网络才行。

推荐在管理节点下载好,使用copy仅分发即可。

选项:

url 指定要下载的地址

dest 下载到哪个目录

案例14: 下载zabbix-agent的软包到/app/tools下面

zabbix-agent地址为:https://mirrors.aliyun.com/zabbix/zabbix/6.0/rhel/7/x86_64/zabbix-agent-6.0.13-release1.el7.x86_64.rpm

注:有时候wget下载会提示需要什么certificate,可加选项--no-check-certificate跳过认证;

[root@m01 ~]# ansible all -m get_url -a 'url="https://mirrors.aliyun.com/zabbix/zabbix/6.0/rhel/7/x86_64/zabbix-agent-6.0.13-release1.el7.x86_64.rpm" dest=/tmp/'

后续可以调用yum模块安装本地的软件

name=/app/tools/xxxxx.rpm即可。

---------------------------------------------------------

yum_repository模块

未来书写好yum配置文件,copy分发过去即可。

选项:

name yum源中名字 [epel]

description yum源的注释说明 对应的 是name的内容

baseurl yum源中 baseurl 下载地址

enabled 是否启动这个源 yes/no

gpgcheck 是否启动gpgcheck功能 no

file 指定yum源的文件 自动添加 .repo 默认与模块名字一致。

例:

-m yum_repository -a 'name=epel description="Extra Packages for Enterprise Linux 7 - $basearch" baseurl="http://mirrors.aliyun.com/epel/7/$basearch" enabled=yes gpgcheck=no'

---------------------------------------------------------

用户管理

user用户管理 : useradd,userdel

group用户组管理 : groupadd

---------------------------------------------------------

user模块

选项:

name,例 wwww 用户名

uid 指定uid

group 指定用户组,一般用于事先创建好了用户组,通过选项指定下.

shell 指定命令解释器:默认是/bin/bash /sbin/nologin

create_home 是否创建家目录(yes/no)

state=present 添加

state=absent 删除

password 加密的密码

案例15: 创建www-ans用户uid 2000虚拟用户

[root@m01 ~]# ansible all -m user -a 'name=www-ans uid=2000 shell=/sbin/nologin create_home=no state=present'

案例16: 批量更新密码

[root@m01 ~]# ansible all -m shell -a 'echo 1 | passwd --stdin mclind'

[root@m01 ~]# ansible all -m user -a "name=mclind password={{ '1' | password_hash('sha512','suiyi') }} state=present"

注:关于{{}}相关的解释

{{ '1' | password_hash('sha512', 'suiyi') }}

表示1是密码,经过管道,传递给了password_hash()插件, sha512加密算法,lidao是随机字符用于生成随机加密后的密码

注:官方文档,https://docs.ansible.com/ansible/latest/reference_appendices/faq.html#how-do-i-generate-encrypted%02passwords-for-the-user-module

---------------------------------------------------------

group模块

选项:

name 指定用户组名字

gid 指定组的gid

state=present添加

state=absent 删除

---------------------------------------------------------

mount模块

实现mount命令进行挂载可以修改/etc/fstab实现永久挂载

选项:

fstype filesystem type指定文件系统,xfs,ext4,iso9660,nfs

src 源地址(nfs地址 eg 172.16.1.31:/data )

path 注意这里不是dest,挂载点(要把源挂载到哪里)

state

state=absent 卸载并修改fstab

state=unmounted 卸载不修改/etc/fstab

state=present 仅修改/etc/fstab 不挂载

state=mounted 挂载并修改/etc/fstab

state=remounted 重新挂载

案例17: 通过ans管理在web01上挂载nfs:/data挂载到web01的/ans-upload/

#在web服务器上安装nfs

[root@m01 ~]# ansible web -m yum -a 'name=nfs-utils state=present'

#创建挂载点

[root@m01 ~]# ansible web -m file -a 'path=/ans-upload/ state=directory'

#挂载nfs

[root@m01 ~]# ansible web -m mount -a 'src=172.16.1.31:/data/ path=/ans-upload/ fstype=nfs state=mounted'

#检查

[root@m01 ~]# ansible web  -a 'df -h'

[root@m01 ~]# ansible web  -a 'grep upload /etc/fstab'

---------------------------------------------------------

cron模块

用于管理系统的定时任务,替代了crontab -e功能。

选项:

name 定时任务名字(一定要加上), 对应下面 注释 的内容

minute 分钟 minute="*/2"

hour 小时

day 日期

month 月份

week 周几

job 指定命令或脚本(定向到空) job="/sbin/ntpdate ntp1.aliyun.com &>/dev/null"

state=present 添加定时任务(默认)

state=absent 删除

案例18: 每3分钟同步时间。

#清理已有定时任务,如果没有,会报错提示没有此文件或目录

[root@m01 ~]# ansible all -a "sed -i '/ntpdate/d' /var/spool/cron/root"

#重新创建定时同步时间任务

[root@m01 ~]# ansible all -m cron -a 'name="sync time by mclind" minute="*/3" job="/sbin/ntpdate ntp1.aliyun.com &>/dev/null" state=present'

#删除定时任务

[root@m01 ~]# ansible all -m cron -a 'name="sync time by mclind" state=absent'

============================================================================

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容