ansible模块之yum、copy、service模块

117 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第28天,点击查看活动详情

yum模块

语法格式

[root@ansible ~]# ansible web -m yum -a "name=httpd state=installed"
参数
name		//指定要安装软件包的名称,如果有多个用","隔开
state		//指定使用yum的方法
	installed|present		//安装软件包
	removed|absent			//移除软件包
	latest					//安装最新软件包

案例1:安装已存在的软件包

[root@ansible ~]# ansible web -m yum -a "name=httpd,ftp state=installed"
192.168.81.220 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "msg": "", 
    "rc": 0, 
    "results": [
        "httpd-2.4.6-88.el7.centos.x86_64 providing httpd is already installed", 
        "ftp-0.17-67.el7.x86_64 providing ftp is already installed"
    ]
}

案例2:删除指定的安装包

[root@ansible ~]# ansible web -m yum -a "name=httpd,ftp state=removed"

案例3:安装指定软件(present)

[root@ansible ~]# ansible web -m yum -a "name=httpd,ftp state=present"

1.copy模块

语法格式

[root@ansible ~]# ansible web_clust -m copy -a "src=源文件 dest=目标文件"
参数
src			//推送数据的源文件信息
dest		//推送数据的目标路径
backup		//对目标端已有的文件进行备份再传输
content		//直接批量在被管理端文件中添加内容,如果原来有内容直接覆盖
group		//将本地文件推送到远端,指定文件属组信息
owner		//将本地文件推送到远端,指定文件属主信息
mode		//将本地文件推送到远端,指定文件权限信息

案例1:将本地/etc/hosts文件推送到远端按时间信息备份

ansible端
[root@ansible ~]# ansible web_clust -m copy -a "src=/etc/hosts dest=/etc/ backup=yes"
192.168.81.180 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    }, 
    "backup_file": "/etc/hosts.21644.2020-06-10@22:27:31~", 
    "changed": true, 
    "checksum": "ef1e1a00259d1710511577d93041afabd43dc651", 
    "dest": "/etc/hosts", 
    "gid": 0, 
    "group": "root", 
    "md5sum": "80dcb22cf7b283e617248324201e390e", 
    "mode": "0644", 
    "owner": "root", 
    "secontext": "system_u:object_r:net_conf_t:s0", 
    "size": 241, 
    "src": "/root/.ansible/tmp/ansible-tmp-1591799249.82-11243-223340081540480/source", 
    "state": "file", 
    "uid": 0
}

远程端:
[root@web ~]# ls /etc/*hosts*
/etc/hosts  /etc/hosts.74203.2020-06-03@23:16:11~ 

案例2:添加rsync认证文件和rsync客户端密码文件

添加rsync认证文件

对rsync服务器写入一个文件并设置权限和属组
[root@ansible ~]# ansible  backup -m copy -a "content='rsync_backup:123456' dest=/etc/rsync_passwdfile owner=root group=root mode=600"

测试文件属性和内容
[root@ansible ~]# ansible backup -m shell -a "ls -l /etc/rsync_passwdfile && cat /etc/rsync_passwdfile"

添加客户端密码文件

[root@ansible ~]# ansible web_clust -m copy -a "content=123456 dest=/etc/rsync_pass owner=root group=root mode=600"
192.168.81.240 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": true, 
    "checksum": "7c4a8d09ca3762af61e59520943dc26494f8941b", 
    "dest": "/etc/rsync_pass", 
    "gid": 0, 
    "group": "root", 
    "md5sum": "e10adc3949ba59abbe56e057f20f883e", 
    "mode": "0600", 
    "owner": "root", 
    "size": 6, 
    "src": "/root/.ansible/tmp/ansible-tmp-1591199068.62-53706-208979644933057/source", 
    "state": "file", 
    "uid": 0
}

[root@ansible ~]# ansible web_clust -m shell -a "ls -l /etc/rsync_pass && cat /etc/rsync_pass"
192.168.81.240 | CHANGED | rc=0 >>
-rw------- 1 root root 6 6月   3 23:44 /etc/rsync_pass
123456


2.service模块

语法格式

ansible 主机组	-m service -a "name=服务 state=状态"
参数
name		//服务的名称
state		//服务的状态
	started			启动
	restarted		重启
	stoped			停止
	reloaded		重载
enabled		//是否开机自启	如果=no则表示disable

案例1:开启web主机组的http服务,并设置端口号,创建首页

1.更改端口
[root@ansible ~]# ansible web -m shell -a "sed -ri '/^Listen/c Listen 80' /etc/httpd/conf/httpd.conf"

2.开启服务
[root@ansible ~]# ansible web -m service -a "name=httpd state=started enabled=yes"

3.开启服务
[root@ansible ~]# ansible web -m copy -a "content='this is a test' dest=/var/www/html/index.html"