本次练习环境可参考【Ansible】—— 搭建学习环境以及安装ansible
一、包管理。
1> 为所有被管理机器设置zabbix yum源码
其中baseurl=‘https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/8/x86_64/’
ansible all -m yum_repository -a 'file=zabbix description=zabbix name=zabbix baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/8/x86_64/ gpgcheck=no enabled=yes '
2> 为所有被管理机器安装nginx。
ansible all -m yum -a ‘name=nginx state=latest’
二、服务管理。
1>为所有被管理机器启动nginx并设置开机自启动。
ansible all -m service -a ’name=nginx state=started enabled=yes’
三、用户管理。
1> 为所有被管理机器添加用户组openlab,要求为系统组。
ansible all -m group -a ‘name=openlab system=yes’
2> 为所有被管理机器添加用户bob,要求为系统用户,附加组为openlab。
ansible all -m user -a ‘name=bob system=yes groups=openlab’
3> 为所有被管理机器bob用户生成密钥对。
ansible all -m user -a ‘name=bob generate_ssh_key=yes ssh_key_bits=2048 ssh_key_file=.ssh/id_rsa’
四、文件管理。
1> 为所有被管理机器创建/data目录。
ansible all -m file -a ‘path=/data’
2> 为所有被管理机器/data下创建权限为777的aaa.txt文件。
ansible all -m file -a ‘path=/data/aaa.txt state=file mode=777 ’
3> 为所有被管理机器aaa.txt 文件创建软链接文件,软链接名为 aaa_link.txt。
ansible all -m file -a ‘path=/data/aaa_link.txt state=link src=/data/aaa.txt’
4> 将Ansible管理主机的/etc/hosts文件拷贝至被管理机器/opt目录。
ansible all -m copy-a ‘ src=/etc/hosts dest=/opt/ ’
5> 将Ansible管理主机上的nginx包解压至被管理机器/opt目录。
ansible all -m unarchive -a ‘ src=nginx-1.17.8.tar.gz dest=/opt/ ’
6> 配置所有被管理机器SELinux为 enforcing mode。
ansible all -m lineinfile -a ‘path=/etc/selinux/config regexp=”^SELINUX” line=SELINUX=permissive’
7> 将http://nginx.org/download/nginx-1.17.8.tar.gz下载到所有被管理机器/opt目录。
ansible all -m get_url-a “ url=http://nginx.org/download/nginx-1.17.8.tar.gz dest=/opt/ ”
8>将Ansible管理主机/data目录推送到目标主机的/opt目录下,使用此模块需要先安装rsync服务,并删除不存在的文件,使两边的内容一样。
ansible all -m yum -a “ name=rsync state=latest ”
ansible all -m synchronize -a “ src=/data/ dest=/opt/ archive=yes delete=yes”
五、系统管理模块。
1> 每天8点钟进行nginx的/usr/share/nginx/html备份。
ansible all -m cron -a “ name=’cron dump’ hour=8 minute=0 job=’[ -d /bak ] || mkdir /bak; tar /bak/nginx-1.17.8.tar.gz /usr/share/nginx/html’ ”
2> 删除以上计划任务。
ansible all -m cron -a 'name=cron_dump state=absent'
六、防火墙管理。
1> 配置允许http服务并立即生效。
ansible all -m service -a 'name=firewalld state=started enabled=true'
ansible all -m firewalld -a 'service=http permanent=true immediate=true state=enabled'
2> 配置允许tcp 80端口并立即生效。
ansible all -m firewalld -a 'port=80/tcp permanent=true immediate=true state=enabled'
3> 配置富规则:允许本网段用户访问web应用。
ansible all -m firewalld -a 'rich_rule="rule family=ipv4 source address=192.168.118.0/24 service name=http accept" permanent=true immediate=true state=enabled'
七、系统信息模块。
1>查看目标主机的一些信息。
ansible all -m setup
八、磁盘管理。
前提:事先为被管理机器添加一块5G硬盘。
1> 使用parted模块创建一个500M主分区。
ansible all -m parted -a 'device=/dev/nvme0n2 number=1 part_end=500MiB state=present'
2> 使用parted模块创建一个类型为lvm的1G分区。
ansible all -m parted -a 'device=/dev/nvme0n2 number=2 part_start=500MiB part_end=1.5GiB flags=lvm state=present'
3> 使用lvg模块利用上面的lvm类型分区创建一个名为myvg的卷组。
ansible all -m lvg -a 'pvs=/dev/nvme0n2p2 vg=myvg'
4> 使用lvol模块在myvg卷组上创建一个名为mylv的逻辑卷,大小为500M。
ansible all -m lvol -a 'vg=myvg lv=mylv size=500M'
5> 使用filesystem模块为mylv逻辑卷创建xfs文件系统。
ansible all -m filesystem -a 'dev=/dev/myvg/mylv fstype=xfs force=yes'
6> 为被管理机器创建挂载点/tools。
ansible all -m file -a 'path=/tools state=directory'
7> 挂载mylv到/tools,并设置开机自动挂载。
ansible all -m mount -a 'src=/dev/myvg/mylv path=/tools fstype=xfs state=present'
温馨提示:
后面的命令语句中,外面和里面的单双引号区别,为了方便理解,以系统管理模块的第一小题示例(下面两个命令不同之处用红色标记):
正确示例:
“ name=’cron dump’ hour=8 minute=0 job=’[ -d /bak ] || mkdir /bak; tar /bak/nginx-1.17.8.tar.gz /usr/share/nginx/html’ ”
错误示例:
“ name=“cron dump” hour=8 minute=0 job=’[ -d /bak ] || mkdir /bak; tar /bak/nginx-1.17.8.tar.gz /usr/share/nginx/html’ ”