1、安装
配置腾讯yum源,阿里云报403,注意本地yum源也需要,有依赖
[epel]
name=epel
#baseurl=http://mirrors.aliyun.com/epel/7/x86_64
baseurl=https://mirrors.cloud.tencent.com/epel/7/x86_64/
gpgcheck=0
enable=1
yum clean all && yum makecache
yum -y install ansible
2、配置ansible管理节点和主机的连接
ssh-keygen
ssh-copy-id 20.81.11.81
ssh-copy-id 20.81.11.82
ansible all -m ping
3、ansible模块
ansible语法
ansible [主机清单] -m 模块 -a "参数"
ping模块
配置ansible主机清单 主机清单配置文件/etc/ansible/hosts 验证ansible [root@m01 ~]# ansible oldboy -m ping
command命令模块
-a 就是基础命令模块常用命令使用
例子:
ansible [主机清单] -a "cat /etc/passwd"
shell命令模块
-m shell 对于偏复杂的命令使用,比如加cat 1|grep 1
例子:
ansible [主机清单] -m shell -a "cat 1|grep 1"
yum安装模块
-m yum 顾名思义用来安装的
参数:
name ---指定要安装的软件包名称,如果有多个,用","隔开
state ---指定使用yum的方法
installed,present ---安装软件包
removed,absent ---移除软件包
latest ---安装最新软件包
例子:
批量安装httpd和卸载
安装:ansible web -m yum -a "name=httpd state=installed"
卸载:ansible web -m yum -a "name=httpd state=removed"
copy推送文件模块
-m copy 推送文件,追加文件内容,附加文件权限 参数: src --- 推送数据的源文件信息 dest --- 推送数据的目标路径 backup --- 对推送传输过去的文件,进行备份 content --- 直接批量在被管理端文件中添加内容 group --- 将本地文件推送到远端,指定文件属组信息 owner --- 将本地文件推送到远端,指定文件属主信息 mode --- 将本地文件推送到远端,指定文件权限信息 例子:批量推送文件 ansible [主机清单] -m copy -a "src=/fzl/1 dest=/fzl" 例子2:批量送文件并备份 ansible [主机清单] -m copy -a "scr=/fzl/1 dest=/fzl backup=yes" 如果/fzl/有1这个文件就备份 例子3:添加文件追加内容(覆盖慎用)并附带文件用户和组和权限
ansible [主机清单] -m copy -a "content='rsync_backup:1' dest=/etc/rsync.password owner=root group=root mode=600"
service模块
-m service 相当于systemctl
参数:
name # 定义要启动服务的名称
state # 指定服务状态是停止或是运行,停止和运行指令要写成过去时
started # 启动
stopped # 停止
restarted # 重启
reloaded # 重载
enabled # 是否让服务开启自启动
例子:
批量启动httpd服务,并添加一个首页,通过浏览器访问
ansible web -m service -a "name=httpd state=started enabled=yes"
group模块
-m group
- gid
设置组id
= name
需要管理的组名
- state
执行状态,absent 删除
present 创建(默认)
例1:创建组名www,并设置gid 666
[root@m01 ~]# ansible all -m group -a "name=www gid=666"
例2:修改www组的gid为888
[root@m01 ~]# ansible all -m group -a "name=www gid=888"
例3:删除www组
[root@m01 ~]# ansible all -m group -a "name=www gid=888 state=absent"
user模块
-m user
= name
用户名
- uid
uid
- group
gid或groupname
- state
执行状态,absent 删除
present 创建(默认)
- shell
登录shell,/bin/bash(默认),/sbin/nologin
- create_home
创建用户时,是否创建家目录,create_home=no
- password
用户密码,不能使用明文,需用使用openssl加密后的密码
例1:创建一个用户oldboy,指定uid 60000,gid 666,并设置密码为123
注意:password不能使用明文,需要加密,password的加密值需用使用双引号
# -1使用MD5进行加密 -stdin 非交互式
[root@m01 ~]# echo "123"| openssl passwd -1 -stdin
$1$YmQSB.yb$EeZphDZ7ror/8dASNSM.c1
[root@m01 ~]# ansible backup -m user -a 'name=oldboy uid=60000 group=666 password="$1$DlBUYXav$VhZv.G3YmzG8T85sbfP3b1"'
例2:创建一个程序用户www,指定uid666 gid666 不让登录 不创建家目录
[root@m01 ~]# ansible all -m user -a "name=www uid=666 group=666 shell=/sbin/nologin create_home=no"
file模块
= path 目标文件路径 dest(和path等价) name(和path等价) - src 源文件路径 - owner 属主 - group 属组 - mode 权限 - state absent 删除 directory 创建目录 file 修改文件属性(默认) touch 创建文件 link hard 链接 - recurse 递归 recurse=yes
例1:创建目录/data和/backup,属主666,属组666,递归
[root@m01 ~]# ansible all -m file -a "path=/data owner=666 group=666 recurse=yes state=directory"
例2:创建文件/etc/rsync.password,权限600
[root@m01 ~]# ansible all -m file -a "path=/etc/rsync.password state=touch mode=600"
例3:对/etc/hosts做个软链接,到/tmp/hosts
[root@m01 ~]# ansible all -m file -a "src=/etc/hosts path=/tmp/hosts state=link"
总结:file模块仅适合创建目录,修改所属和权限,创建链接,除开这些操作的其他文件管理都通过copy模块实现
mount模块
= path 挂载点 - src 需要挂载的设备 - fstype 挂在设备的文件系统 iso9660 光驱 ext4 xfs nfs cifs samba的共享文件系统 ntfs windows磁盘文件系统 - opts 挂载属性 noatime noexec nosuid = state 挂载动作 present # 开机挂载,仅将挂载配置写入/etc/fstab mounted # 挂载设备,并将配置写入/etc/fstab unmounted # 卸载设备,不会清除/etc/fstab写入的配置 absent # 卸载设备,会清理/etc/fstab写入的配置 例1:通过nfs实现网络文件共享(综合小实验) 1)安装nfs [root@m01 ~]# ansible nfs -m yum -a "name=nfs-utils state=installed" 2)启动服务 [root@m01 ~]# ansible nfs -m service -a "name=rpcbind state=started" [root@m01 ~]# ansible nfs -m service -a "name=nfs state=started" 3)修改配置文件 方法一:在m01创建配置文件,使用copy模块推给nfs(建议使用)
[root@m01 ~]# mkdir -p /server/conf
[root@m01 ~]# echo '/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)' >/server/conf/exports
[root@m01 ~]# ansible nfs -m copy -a "src=/server/conf/exports dest=/etc/"
方法二:在m01上直接使用copy模块,推送文件内容
[root@m01 ~]# ansible nfs -m copy -a "content='/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)' dest=/etc/exports"
4)创建目录,用户,并修改所属
通过user group file模块来实现,参考上面的例子
5)重载配置文件
[root@m01 ~]# ansible nfs -m service -a "name=nfs state=restarted"
6)在web上挂载nfs的共享目录
[root@m01 ~]# ansible web -m mount -a "src=172.16.1.31:/data path=/var/www/html fstype=nfs state=mounted"
script模块
1)写个脚本,创建用户,并配置密码 [root@m01 scripts]# cat 1.sh #!/bin/bash useradd oldgirl echo 123 |passwd --stdin oldgirl &>/dev/null && echo "创建密码成功" 2)运行脚本 [root@m01 ]# ansible all -m script -a "/server/scripts/1.sh"
cron模块
1)推送脚本至每台受控端
[root@m01 ]# ansible all -m file -a "path=/server/scripts state=directory mode=700"
[root@m01 ]# ansible all -m copy -a "src=/server/scripts/rsync_backup.sh dest=/server/scripts"
2)创建计划任务
- name
描述,必须要写,如果不写,默认为None,会导致无法指定删除某条计划任务
- job
任务(命令)
- state
执行状态,absent 删除
present 创建(默认)
disabled 注释定时任务
true 关闭
false 开启
- minute
Minute when the job should run ( 0-59, *, */2, etc )
[Default: *]
- hour
Hour when the job should run ( 0-23, *, */2, etc )
[Default: *]
- day
Day of the month the job should run ( 1-31, *, */2, etc )
(Aliases: dom)[Default: *]
- month
Month of the year the job should run ( 1-12, *, */2, etc )
[Default: *]
- weekday
Day of the week that the job should run ( 0-6 for Sunday-Saturday, *, etc )
(Aliases: dow)[Default: *]
例子:每天的凌晨1点执行rysnc_bakcup.sh [root@m01 ]# ansible all -m cron -a "name='Rsync Backup' hour=1 minute=0 job='/bin/sh /server/scripts/rsync_backup.sh &>/dev/null'" 例子:注释定时任务 ansible all -m cron -a "disabled=true job='/bin/sh /server/scripts/rsync_backup.sh &>/dev/null' name='Rsync Backup'"
unarchive模块
功能:解压缩 -m unarchive unarchive模块有两种解压缩方式,一种是在ansible主机上解压缩后传到主机清单上的服务器。 第二种是在主机清单上解压缩。 参数: src 需要解压缩我文件(绝对路径) dest 解压缩后指定的目录 copy yes no 选择解压缩方式:一和二(上面有一和二是区别) mode:设置解压缩后的文件权限
例子:
ansible pms -m unarchive -a 'src=/srv/tomcat8/apache-tomcat-8.0.29.tar.gz dest=/usr/local copy=no mode=0755'
标签:name,etc,state,ansible,m01,root
From: https://www.cnblogs.com/mmdln/p/17881365.html