当前位置: 首页 > news >正文

网站编辑建设做外贸找生意上哪个网站

网站编辑建设,做外贸找生意上哪个网站,成都网站建设成都,黑马程序员培训机构第29章 常用模块的使用 本章主要介绍 ansible 中最常见模块的使用。 ◆ 文件管理模块 ◆ 软件包管理模块 ◆ 服务管理模块 ◆ 磁盘管理模块 ◆ 用户管理模块 ◆ 防火墙管理模块 文章目录 第29章 常用模块的使用29.1 shell 模块29.2 文件管理的 file 模块29.3 copy 和fetch模块…第29章 常用模块的使用 本章主要介绍 ansible 中最常见模块的使用。 ◆ 文件管理模块 ◆ 软件包管理模块 ◆ 服务管理模块 ◆ 磁盘管理模块 ◆ 用户管理模块 ◆ 防火墙管理模块 文章目录 第29章 常用模块的使用29.1 shell 模块29.2 文件管理的 file 模块29.3 copy 和fetch模块29.4 yum_repository 模块29.5 使用yum 模块管理软件包29.6 使用 service 模块管理服务29.7 使用 parted 模块对硬盘分区29.8 使用filesystem 模块格式化29.9 使用mount 模块挂载文件系统2.10 使用 lvg 模块对卷组进行管理29.11 使用 lvol 模块管理逻辑卷29.12 使用firewalld 模块管理防火墙29.13 替换模块 replace29.14 替换模块 lineinfile29.15 打印模块debug29.16 使用script 模块在远端执行脚本29.17 使用group模块对组进行管理29.18 使用user 模块对用户进行管理29.19 使用get_url 模块下载文件29.20 使用setup模块获取被管理主机信息作业 ansible 的基本用法如下。 ansible 机器名 -m 模块x -a 模块的参数对被管理机器执行不同的操作只需要调用不同的模块就可以了。ansible 中内置了很多的模块可以通过 ansible-doc -l 查看系统中所有的模块。 [lduanserver ~]$ ansible-doc -l a10_server Manage A10 Networks AX/Soft... a10_server_axapi3 Manage A10 Networks AX/Soft... a10_service_group Manage A10 Networks AX/Soft... ...输出... 按【Enter】键会一行一行地往下显示按空格键会一页一页地往下显示按【q】键退出。 avi_authprofile Module for setup of AuthPro... [lduaneserver ~]$不同的模块有不同的参数如果要查看某个模块的参数可以通过如下语法来查看。 ansible-doc 模块名ansible 中有很多模块每个模块也有很多参数我们是不可能把所有的模块、每个模块 的所有参数都掌握的。所以下面我们只讲解最常见的模块及这些模块中最常见的参数的使用方法。 29.1 shell 模块 shell 模块可以在远端执行操作系统命令具体用法如下。 ansible 主机组-m shell -a 系统命令练习1: 在 server2 上执行 hostname 命令命令如下。 [lduanserver ~]# ansible server2 -m shell -a hostname server2 | CHANGED | rc0 server2.rhce,cc[lduanserver ~]这里rc0的意思是执行此命令之后的返回值为0,rc 的意思是return code (返回值)为0说明正确执行了非零说明没有正确执行。 练 习 2 : 在 server2 上执行一个错误的命令命令如下。 [1duanserver ~]$ ansible server2 -m shell -a hontnamexx server2 | FAILED | rc127 /bin/sh:hostnamexx: 未找到命令 non-zero return code[lduanserver ~]$这里rc127的意思是执行此命令之后的返回值为127,非零说明没有正确执行。 29.2 文件管理的 file 模块 file 模块用于创建和删除文件/目录修改文件/目录属性其常见的参数包括以下几个。 (1) path: 用于指定文件/目录的路径此选项可以用name 或 dest 替代。 (2) state: 指定行为。 (3) touch: 创建文件。 (4) directory: 创建目录。 (5) file: 对已存文件进行修改。 (6) absent: 删除。 (7) link: 软链接。 (8) hard: 硬链接。 (9) 其他参数 owner 指定所有者 group 指定所属组 mode 指定权限 setype 指定 上下文。 练 习1 : 在server2上创建一个文件/opthosts,并设置所有者为root所属组为lduan权限为444,命令如下。 [1duanserver ~]$ ansible server2 -m file -a path/opt/hosts ownerroot grouplduan mode444 statetouch server2 | CHANGED { ...输出... }需要注意的是此处用path 指定的文件替换成name 也是可以的即name/opt/hosts。 查看文件的属性命令如下。 [lduanserver ~]$ ansible server2 -m shell -a ls -l /opt/hosts server2 | CHANGED | rc0 -r--r--r--.1 root tom 63 7月 2811:24 /opt/hosts [lduanserver ~]$练习2: 为/opt/hosts创建一个软链接/opt/hosts123,命令如下。 [lduanserver ~]$ ansible server2 -m file -a src/opt/hosts dest/opt/hosts123 statelink server2 | CHANGED { . . .输出 . . . } [lduanserver ~]$验证命令如下。 [lduanserver ~]$ ansible server2 -m shell -a ls -l /opt/ server2 | CHANGED | rc0 ..输出 . . . lrwxrwxrwx.1 root root 10 7 月 28 11:46 hosts123 -/opt/hosts [lduanserver ~]S练习3: 删除/opt/hosts123, 命令如下。 [lduanserver ~]$ ansible server2 -m file -a name/opt/hosts123 stateabsent server2 | CHANGED { ..输出... } [lduanserver ~]$**练习4: **创建目录/op/xx,上下文设置为 default_t,命令如下。 [1duanserver ~]$ ansible server2 -m file -a name/opt/xx statedirectory setypedefault_t . . .输出 . . .[1duaneserver ~]$练习5: 把/opt/hosts的权限改成000,所有者改成tom, 所属组改成users,命令如下。 [1duanserver ~]$ ansible server2 -m file -a name/opt/hosts ownertom groupusers mode000 server2 | CHANGED { ...输出... } [lduan$server ~]$验证命令如下。 [1duanserver ~]$ ansible server2 -m shell -a ls -1 /opt/hosts server2 | CHANGED | rc0 ----------.1 tom users 63 7月 28 11:24 /opt/hosts [1duanserver ~1$注意指定文件时用 name或 path都是可以的。 清空 server2 上/opt 中所有的内容命令如下。 [lduanserver ~]$ ansible server2 -m shell -a rm -rf /opt/* [WARNING]:Consider using the flle module with stateabsent rather than running m.If you need to use command because file is insufcient you can add warn: falseto this command task or set command_warningsFalsein ansible.cfg to get rid of this message. server2 | CHANGED | rc0 [lduanserver ~]$上面的WARNING 可以忽略不管如果不想显示此消息则在ansible.cfg的 [defaults] 字段下添加 command_warningsFalse 即可。 [1duanserver ~]$ ansible server2 -m shell -a rm -rf /opt/* server2 | CHANGED | rc0 [1duanserver ~1$29.3 copy 和fetch模块 copy 用于把本地的文件拷贝到被管理机器语法如下。 ansible 主机组 -m copy -a src/path1/file1 destpath2/作用是把本地的/path1/file1拷贝到目的主机的/path2中。 copy 模块常见的参数包括以下几个。 (1) src: 源文件。 (2) dest: 日的地即药贝到哪里。 (3) owner: 所有者。 (4) group: 所属组。 (5) mode: 权限。 练 习1: 把本地的文件/etc/ansible/hosts 拷贝到目标机器的/opt目录中并设置权限为000, 所有者为 tom, 命令如下。 [lduanserver ~]$ ansible server2 -m copy -a src/etc/ansible/hosts mode000 ownertom dest/opt server2 | CHANGED { ...输出... } [lduanserver ~]$验证命令如下。 [lduanserver ~]$ ansible server2 -m shell -a ls -l /opt/hosts server2 | CHANGED | rc0 ---.1 tom root 1016 7月 2812:10 /opt/hosts[lduanserver ~]$copy 模块也可以利用content参数往某个文件中写内容如果此文件不存在则会创建 出来。 **练习2: **在被管理机器的/opt 目录中创建11.txt, 内容为123123命令如下。 [lduanserver ~]$ ansible server2 -m copy -a content123123 dest/opt/11.txt server2 | CHANGED { ...输出... } [lduanserver ~]$验证/opt/11.txt 的内容命令如下。 [1duanserver ~]$ ansible server2 -m shell -a cat /opt/11.txt server2 | CHANGED |rc0 123123 [lduanserver ~]$fetch 用于把文件从被管理机器拷贝到本机当前目录中命令如下。 [1duanserver ~]$ ansible server2 -m fetch -a src/opt/hosts dest. server2 |CHANGED {...输出... }查看命令如下。 [lduanserver ~]$ tree server2/ server2/opthosts1 directory,1 file [lduanserver ~]$当使用 fetch拷贝远端目录到本地时会在本地创建一个和远端主机同名的目录用于存放拷贝的文件。 29.4 yum_repository 模块 利用yum_repository 设置 yum 源一个标准的 repo 配置文件如下所示。 [aa] nameaa baseurlftp://192.168.26.101/dvd/AppStream enabled1 gpgcheck1 gpgkeyftp://192.168.26.101/dvd/RPM-GPG-KEY-redhat-release其中[]中的名称用于区分不同的 yum 源。这里参数的含义如下。 (1) name: 此 yum 源的描述信息。 (2) baseurl: 用于指定 yum 源的具体地址。 (3) enabled: 用于指定是否启用此 yum 源。 (4) gpgcheck: 用于指定在安装软件包时是否要进行数字签名的验证 一般设置为0 即可。 (5) gpgkey; 在 gpgcheck 设置为1的情况下用于指定公钥的位置。 对于 yum_repository 模块来说常见的参数包括以下几个。 (1) name;repo 配置文件里[]中的名称。 (2) description:repo 配置文件里 name 字段的描述信息。 (3) baseurl: 用于指定 yum 源的位置。 (4) enabled: 是否启用源值为 true 或 falsc。 (5) gpgcheck: 是否启用数字签名验证值为 true 或 false。 (6) gpgkey: 用于指定公钥的位置。 练 习: 给 server2 配置 yum源地址是fp:/192.168.26.101/dvd/AppStream所需要的密钥文件为 ftp://192.168.26.6/dvd/RPM-GPG-KEY-redhat-release命令如下。 [1duanserver ~]$ ansible server2 -m yum_repository -a nameapp description this is appsream baseurlftp://192.168.26.101/dvd/AppStream gpgkeyftp://192.168.26.6/dvd/RPM-GPG-KEY-redhat-release server2 | CHANGED { ...输出...[lduanserver ~]$执行之后的效果如下。 [lduanserver ~]$ ansible server2 -m shell -a ls /etc/yum.repos.d/ server2 I CHANGED | rc0 app.repo[lduanserver ~]$ [lduanserver ~]$ ansible server2 -m shell -a cat /etc/yum.repos.d/app.repo server2 |CHANGED |rc0 [app] baseur1 ftp:// 192.168.26.101/dvd/AppStream gpgcheck 1 gpgkey ftp:// 192.168.26.101/dvd/RPM-GPG-KEY-redhat-release name this is appsream [lduanserver ~]$给 server2 配置第二个yum 源地址是 fp://192.168.26.101/dvd/BaseOS, 所需要的密钥文 件为fp://192.168.26.6/dvd/RPM-GPG-KEY-redhat-release, 命令如下。 [lduanserver ~]$ ansible server2 -m yum_repository -a namebaseos descriptionthis is baseos baseurlftp:// 192.168.26.101/dvd/BaseOs gpgcheckyes gpgkeyftp://192.168.26.101/dvd/RPM-GPG-KEY-redhat-release server2 |CHANGED { ...输出... [lduanserver ~]29.5 使用yum 模块管理软件包 yum 模块常见的参数包括以下几个。 (1) name: 用于指定软件包的名称。 (2) state: 此参数的值如下。 ① present 或 installed: 用于安装软件包没有指定 state 时的默认值就是 installed。 ② absent或 removed: 用于卸载软件包。 ③ latest: 用于更新。 注意yum 模块可以用 package 模块替代用于在 Ubuntu 等其他系统上管理软件包。 练 习1 : 在server2上安装 vsftpd, 命令如下。 [lduanserver ~]$ansible server2 -m yum -a namevsftpd stateinstalled server2 | CHANGED { ...输出..[1duanserver ~]$验证命令如下。 [lduanserver ~]$ansible server2 -m shell -a rpm -qa | grep vsftpd server2 | CHANGED | rc0 vsftpd-3.0.3-33.el8.x86_64 [1duanserver ~]$练 习 2: 在 server2 上卸载 vsftpd, 命令如下。 [1duanserver ~]$ ansible server2 -m yum -a namevsftpd stateabsent server2 | CHANGED { ...输出...[lduanserver ~]S如果本机没有安装 vsftpd, 下面的命令就是安装如果已经安装则更新到最新版。 ansible server2 -m yum -a namevsftpd statelatest如果要安装组或模块需要在组名或模块名前加这个模块要使用引号引起来。 练 习3 : 安 装 RPM开发工具命令如下。 [1duanserver ~]$ ansible server2 -m yum -a nameRPM 开发工具 stateinstalled server2 | CHANGED { ...输出... } [lduanserver ~]$29.6 使用 service 模块管理服务 可以通过systemctl 对服务进行启动、重启、关闭等操作在 ansible 中可以调用service 模 块来实现对服务的管理 service 模块常见的参数包括以下几个。 (1) name: 指定对哪个服务进行管理。 (2) enabled: 用于设置此服务是否开机自动启动值为 yes 或 no, 默认值为空。 (3) state: 用于启动或关闭服务其值包括 started、stopped、restarted 等。 首先判断 server2 上的 vsfpd 是否启动命令如下。 [lduanserver ~]$ ansible server2 -m shell -a systemctl is-active vsftpd server2 | FAILED | rc3 inactivenon-zero return code[lduanserver ~]$这里返回值为3(rc3), 说明 server2上的 vsftpd 没有启动。 **练习**启动 vsfipd 并设置开机自动启动命令如下。 [lduanserver ~]$ ansible server2 -m service -a namevsftpd statestarted enabledyes server2 |CHANGED { ...输出... } [lduanserver ~]$验证命令如下。 [lduanserver ~]$ ansible server2 -m shell -a systemctl is-active vsftpd; systemctl is-enabled vsftpd server2 |CHANGED I rc0 active enabled [lduanserver ~]$或者到 server2上验证命令如下。 [rootserver2 ~]#systemctl is-active vsftpd active [rootserver2 ~]#systemctl is-enabled vsftpd enabled [rootserver2 ~]#29.7 使用 parted 模块对硬盘分区 在 ansible 中如果对分区进行管理使用的是 parted 模块 parted 模块常见的参数包括以下 几个。 (1) device: 指的是哪块磁盘。 (2) number: 第几个分区。 (3) part_start: 指的是从硬盘的什么位置开始划分不写默认为从头开始(0%)。 (4) part_end: 指的是到硬盘的什么位置作为分区的结束点。 (5) state: 用于指定操作 present是创建absent 是删除。 自行在 server2 上新添加一块类型为 SCSI、 大小为20G 的硬盘命令如下。 列出所有可用块设备的信息 [rootserver2 ~]# lsblk练习1: 在server2 上对/dev/sdb 创建一个大小为2GiB 的分区/dev/sdb1, 命令如下。 [1duanserver ~]$ ansible server2 -m parted -a device/dev/sdb number1 part_end2GiB statepresent server2 | CHANGED ( ...输出... } [1duanserver ~]$此例是对/dev/sdb创建第一个分区因为从硬盘头开始所以不需要指定 part_start, 此分区到2GiB 位置结束。 [lduanserver ~]$ ansible server2 -m shell -a lsblk server2 I CHANGED | rc0 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT . . . 输 出 . . . sdb 8:16 0 20G 0 disk— sdb1 8:17 0 2G 0 part sr0 11:0 1 6.6G 0 rom /dvd练 习 2 : 在 server2 上对/dev/sdb 创建一个大小为2GiB 的分区/dev/sdb2, 命令如下。 [lduanserver ~]$ ansible server2 -m parted -a device/dev/sdb number2 part_start2GiB part_end4GiB statepresent server2 |CHANGED { . . . 输 出 . . . script:unit KiB mkpart primary 1024MiB 4096MiB [lduanserver ~]$此例是对/dev/sdb 创建第二个分区从2GiB 位置开始到4GiB 位置结束。 在 server2 上查看分区命令如下。 [1duanserver ~]$ ansible server2 -m shell -a lsblk server2 I CHANGED |rc0 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT . . . 输 出 . . . sdb 8:16 0 20G 0 disksdb1 8:17 0 2G 0 partsdb2 8:18 0 2G 0 part sr0 11:0 1 6.6G 0 rom /dvd练 习 3 : 删除 server2 上的/dev/sdb2, 命令如下。 [lduanserver ~]$ ansible server2 -m parted -a device/dev/sdb number2 stateabsent server2 |CHANGED { . . . 输 出 . . .[lduanserver ~]4验证命令如下。 [lduanserver ~]$ ansible server2 -m shell -a lsblk server2 I CHANGED | rc0 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT ...输出... sdb 8:16 0 20G 0 disksdbl 8:17 0 2G 0 part sr0 11:0 1 6.6G 0 rom /dyd [lduanserver ~]$可以看到/dev/sdb2已经被删除了。 请自行创建出/dev/sdb2和/dev/sdb3 备用命令如下。 [lduanserver ~]$ ansible server2 -m shell -a lsblk server2 | CHANGED | rc0 ..输出... sdb 8:16 0 20G 0 disksdbl 8:17 0 2G 0 partsdb2 8:18 0 2G 0 partsdb3 8:19 0 2G 0 part sr0 11:0 1 6.6G 0 rom /dvd [lduanserver ~]$29.8 使用filesystem 模块格式化 分区创建好之后需要对分区进行格式化操作格式化的模块为 flesystem,flesystem 模块常见的参数包括以下几个。 (1) dev: 用于指定对哪个设备进行格式化。 (2) fstype: 用于指定用什么文件系统进行格式化。 (3) force: 是否强制格式化默认为no。 练习把server2 上的/dev/sdb3 格式化为 XFS 文件系统命令如下。 [lduanserver ~]$ ansible server2 -m filesystem -a dev/dev/sdb3 fstypexfs server2 |CHANGED { ...输出... } [1duanserver ~]$如果想重新格式化需要加上 force 选项命令如下。 [lduanserver ~]$ ansible server2 -m filesystem -a dev/dev/sdb3 fstypexfs forceyes server2 I CHANGED { ...输出...29.9 使用mount 模块挂载文件系统 格式化之后就需要挂载分区挂载用的是 mount 模 块 mount 模块常见的参数包括以下 几个。 (1) src: 用于指定挂载哪个设备。 (2) path: 用于指定挂载点。 (3) fstype: 用于指定挂载的文件系统这个选项一定要指定。 (4) opts: 用于指定挂载选项如果不指定则为 defaults。 (5) state: 此参数的值如下。 ① mounted: 挂载的同时也会写入/etc/fstab。 ② present: 只是写入/etc/fstab,但当前并没有挂载。 ③ unmounted: 只卸载并不会把条目从/etc/fstab 中删除。 ④ absent: 卸载并从/etc/fstab 中删除。 练 习 1 : 把server2上的/dev/sdb3 挂载到/123 目录上挂载选项为只读命令如下。 [lduanserver ~]$ ansible server2 -m mount -a src/dev/sdb3 path/123 statemounted fstypexfs optsdefaults,ro server2 | CHANGED { ...输出... } [lduanserver ~]$这里指定了挂载选项为 defaults,ro, 多个选项用逗号隔开。 验证命令如下。 [1duanserver ~]$ ansible server2 -m shell -a df -hT | grep sdb3 server2 | CHANGED | rc0 /dev/sdb3 xfs 2.0G 256K 2.0G 1%/123 [1duanserver ~]$ [1duanserver ~]$ ansible server2 -m shell -a grep sdb3 /etc/fstab server2 | CHANGED | rc0 /dev/sdb3 /123 xfs defaults,ro 0 0 [lduanserver ~]$因为挂载时 state 的值是 mounted, 所以不仅把/dev/sdb3挂载了也写人/etc/fstab了。 练 习2 : 在server2 上卸载并从/etc/fstab 中删除/dev/sdb3, 命令如下。 [lduanserver ~]$ ansible server2 -m mount -a src/dev/sdb3 path/123 stateabsent server2 |CHANGED { ...输出... } [lduanserver ~]$注意如果卸载 path 是一定要指定的src 指定不指定都无所谓。 2.10 使用 lvg 模块对卷组进行管理 使用 Ivg模块管理卷组此模块常见的参数包括以下几个。 (1) pvs: 用于指定物理卷如果有多个 PV 则用逗号隔开不需要提前创建PV, 此命令 会自动创建 PV。 (2) vg: 用于指定卷组的名称。 (3) pesize: 用于指定PE 的大小。 (4) state: 此参数的值如下。 ① present: 用于创建卷组默认。 ② absent: 用于删除卷组。 练 习1 : 在server2上创建名称为vg0的卷组所使用的分区为/dev/sdb1和/dev/sdb2, pesize 指定为16M。 先确认 server2 上不存在任何 PV 和 VG, 命令如下。 [1duanserver ~]$ ansible server2 -m shell -a vgs server2 | CHANGED |rc0 [1duanserver ~]$开始创建 vg0, 命令如下。 [1duanserver ~]$ ansible server2 -m lvg -a pvs/dev/sdb1,/dev/sdb2 vgvg0 pesize16 statepresent server2 |CHANGED { ...输出... changed:true } [lduanserver ~]$这里如果不指定 pesize 选项则默认为4。 验证命令如下。 [lduanserver ~]$ ansible server2 -m shell -a vgs server2 |CHANGED | rc0 VG #PV #LV #SN Attr VSize VFree vg0 2 0 0 wz--n- 3.97g 3.97g [lduanserver ~]$练习2: 删除卷组 vg0, 命令如下。 [lduaneserver ~]$ ansible server2 -m lvg -a vgvg0 pesize16 stateabsent server2 | CHANGED { ...验证... changed:true } [1duanserver ~]$验证命令如下。 [lduanserver ~]$ ansible server2 -m shell -a vgs server2 | CHANGED | rc0 [lduanserver ~]$可以看到 vg0 已经没有了。 请使用 ansible server2 -m lvg -a “pvs/dev/sdb1,/dev/sdb2 vgvg0 pesize16 statepresent” 命令再次把vg0 创建出来。 29.11 使用 lvol 模块管理逻辑卷 卷组创建好之后就要创建逻辑卷了管理逻辑卷的模块是lvol,Ivol模块常见的参数包含 以下几个。 (1) vg: 用于指定在哪个卷组上划分逻辑卷。 (2) lv : 逻辑卷的名称。 (3) size: 用于指定逻辑卷的大小。 (4) state: 此参数的值如下。 ① present: 用于创建逻辑卷。 ② absent: 用于删除逻辑卷。 练 习1 : 在 server2 的卷组 vg0上创建大小为1G、 名称为 Iv0的逻辑卷。 先判断 server2 上是否存在逻辑卷命令如下。 [lduaneserver~]$ ansible server2 -m shell -a lvs server2 | CHANGED | rc0 [lduanserver ~]$以看到不存在任何逻辑卷。下面开始创建逻辑卷命令如下。 [lduanserver ~]$ ansible server2 -m lvol -a vgvg0 lvlv0 size1G server2 | CHANGED { ,..输出... [lduanserver ~]$验证命令如下。 [lduanserver ~]$ ansible server2 -m shell -a lvs server2 | CHANGED | rc0 LV VG Attr LSize Pool Origin Datag Metag Move Log CpyiSync Convert lv0 vg0 -wi-a-----1.00g [lduaneserver ~]$可以看到此逻辑卷已经创建出来了。 练 习 2: 在 server2上删除逻辑卷/dev/vg0/lv0, 命令如下。 [lduanserver2]$ansible server2 -m lvol -a vgvg0 lvlv0 stateabsent forceyes server2 | CHANGED { . .输出 . . } [1duanserver rh294]$29.12 使用firewalld 模块管理防火墙 在 ansible 中可以通过firewalld 模块对防火墙进行管理 firewalld 模块常见的参数包括以下几个。 (1) service: 开放哪个服务。 (2) port: 开放哪个端口用法为 port80/tcp。 (3) permanentycs: 设置永久生效不存在默认值。 (4) immediateyes: 设置当前生效默认为不生效。 (5) state: 此参数的值如下。 ① enabled: 用于创建规则。 ②disabled: 用于删除规则。 (6)rich_rule: 富规则。 练习1 : 在server2上开放服务http命令如下。 [lduanserver ~]$ ansible server2 -m firewalld -a servicehttp immediateyes permanentyes stateenabled server2 | CHANGED { . . . 输出 . . . } [lduanserver ~]$验证命令如下。 [lduanserver ~]$ ansible server2 -m shell -a firewall-cmd --list-all server2 | CHANGED | rc0 public (active) . . . 输出 . . . services:cockpit dhcpv6-client http ssh ports: . . .输出 .. [lduanserver ~]$练习2: 在 server2 上配置防火墙允许 tcp端口808通过命令如下。 [lduanserver ~]$ ansible server2 -m firewalld -a port808/tcp immediateyes permanentyes stateenabled server2 | CHANGED { ...输出... } [1duanserver ~]$在server2上验证刚才的操作命令如下。 [1duanserver ~]$ansible server2 -m shell -a firewall-cmd --list-all server2 | CHANGED | rc0 public(active) . . . 制出 . . . services:cockpit dhcpv6-client http ssh ports: 808/tcp . . .输出 . . . [lduanserver ~]$练习3: 在 scrver2 上配置防火墙删除开放的端口808和服务 http, 命令如下。 [lduaneserver ~]$ ansible server2 -m firewalld -a port808/tcp immediateyes permanentyes statedisabled server2 | CHANGED . . .输出 . . . } [lduanserver ~]$ [lduaneserver ~]$ ansible server2 -m firewalld -a servicehttp immediateyes permanentyes statedisabled server2 |CHANGED { . . .输出 . . . } [lduaneserver ~]$29.13 替换模块 replace 平时写 shell脚本时要替换文件的内容可以直接使用vim 或 sed命令来进行替换操作。 在 ansibie 中也有相关的替换模块 replace 和lineinfle, 这里先讲replace模块的使用. replace模块常见的参数包括以下几个。 (1) path: 指明编辑的文件。 (2) regexp: 正则表达式指定要替换哪块内容。 (3) replace: 替换后的字符。 练 习 1 : 把 server2上/opVaa.txt 中开头为aa 那行的内容替换为xx666。 在 server2 的 /opt 目录中创建 aa.txt, 内容如下。 [rootserver2 opt]# cat aa.txt aa111 bb222 [rootserver2 opt]#在 ansible 主机上执行 replace 模块命令如下。 [1duanserver ~]$ ansible server2 -m replace -a path/opt/aa.txt regexp^aa replacexx666 server2 | CHANGED { ...输出... } [lduaneserver ~]$这里的意思是把server2 上/opt/aa.txt 这个文件中行开头是aa 的字符替换成xx666。 记住这里只是对 regexp 表示的字符进行替换替换之后的内容如下。 [rootserver2 opt]# cat aa.txt xx666111 bb222 [rootserver2 opt]#可以看到只是把原来的字符aa替换成replace后面的内容了并不是把这行内容替换掉。 如果想把整行内容进行替换需要在regexp 后面表示出来整行内容。 练 习 2 : 把 server2 上/opt/aa.txt 中开头为bb 那行的内容替换为 xx666, 命令如下。 [1duanserver ~]$ ansible server2 -m replace -a path/opt/aa.txt regexp^bb. replacexx666 server2 |CHANGED { ...输出...[lduaneserver ~]$这里path 指明了要替换的文件 regexp 的写法是^bb., 比上面的例子中多了.意思是开头是bb 及后续所有的字符(这就表示以bb 开头的那一整行内容)替换成xx666, 运行结果如下。 [rootserver2 opt]# cat aa.txt xx666111 xx666 [rootserver2 opt]#29.14 替换模块 lineinfile lineinfile 模块的用法与 replace 基本一致也是用于替换的常见的参数包括以下几个。 (1) path: 指明编辑的文件。 (2) regexp; 正则表达式。 (3)line: 替换后的字符。 **练 习**把 server2 上/optbb.txt 中开头为 aa111那行的内容替换为xx666。 在 server2 上创建文件/optbb,txt, 内容如下。 [rootserver2 opt]# cat bb.txt aa111 bb222 [rootserver2 opt]#在 ansible 主机上执行 lineinfile 模块命令如下。 [lduanserver ~]$ ansible server2 -m lineinfile -a path/opt/bb.txt regexp ^aa linexx666 server2 |CHANGED { ...输出... } [lduanserver ~]$这里的意思是把path所指定的文件/opt/bb.txtregexp 后面跟的^aa即以aa 开头的行(需要注意的是这里和replace 模块有区别)替换成 xx666, 运行结果如下。 [rootserver2 opt]# cat bb.txt xx666 bb222 [rootserver2 opt]#总结replace是对字符进行替换 lineinfile是对行进行替换如果replace想对行进行替换在regexp 后面必须写上正则表达式来表示一整行内容。 29.15 打印模块debug debug 模块一般用于打印提示信息类似于shell 中的 echo命令其他语言如 Python 等中 的 print其常见的参数包括以下几个。 (1) msg: 后面跟具体内容。 (2) var: 后面跟变量。 注意var 和msg不可以同时使用。 **练习**在 server2上打印“111”命令如下。 [1duanserver ~]$ ansible server2 -m debug -a msghello ansible server2 | SUCCESS {msg: hello ansible [lduanserver ~]$29.16 使用script 模块在远端执行脚本 如果在本地写了一个脚本想在所有被管理节点上执行没有必要事先把脚本分发到被管理机器上使用script 模块即可快速实现。 先写一个简单的脚本 test1.sh 用于显示主机名内容如下。 [lduanserver ~]$ cat test1.sh #!/bin/bash hostname [1duaneserver ~]$ chmod x test1.sh [lduanserver ~]$下面在 db 主机组上执行命令如下。 [lduanserver ~]$ ansible db -m script -a ./test1.sh server2 |CHANGED { . . . 输 出 . . . stdout:server2.rhce.cc\r\n, stdout_lines:[server2.rhce.cc] } server3|CHANGED { . . . 输 出 . . . stdout:server3.rhce,cc\r\n, stdout_lines:[server3.rhce,cc] } [lduanserver ~]$这样本地脚本直接在所有被管理主机上执行了。 29.17 使用group模块对组进行管理 如果对系统的组进行管理那么可以使用group模块。group模块常见的参数包括以下几个。 (1) name: 指定组名。 (2) state: 此参数的值如下。 ① present:用于创建组。 ② absent: 用于删除组。 下面在 server2上创建组 group1。 先判断 server2 上是否存在 group1, 命令如下。 [rootserver2 ~]# grep group1 /etc/group [rooteserver2 ~]#没有任何输出说明 server2上是没有 group1 这个组的。下面创建组 group1 命令如下。 [1duaneserver ~]$ ansible server2 -m group -a namegroup1 statepresent server2 | CHANGED { . . . 输 出 . . . } [lduanserver ~]$然后切换到 server2上进行验证命令如下。 [rooteserver2 ~]# grep group /etc/group group1:x:1003: [rootserver2 ~]#删除这个组命令如下。 [lduanserver ~]$ ansible server2 -m group -a namegroup1 stateabsent server2 |CHANGED { . . . 输 出 . . . } [lduanserver ~]$29.18 使用user 模块对用户进行管理 对用户的管理可以使用 user 模块对于user模块来说常见的参数包括以下几个。 (1) name: 指定用户名。 (2) comment: 指定注释信息。 (3) group: 指定用户的主组。 (4) groups: 指定用户的附属组。 (5) password: 指定密码但是必须对密码进行加密。 (6) state: 此参数的值如下。 ① present: 用于创建用户。 ② absent:用于删除用户。 下面创建一个用户lisi, 命令如下。 [lduanserver ~]$ ansible server2 -m user -a namelisi grouproot password{{haha001 | password_hash(sha512)}} statepresent server2 | CHANGED { . . .输出 . . . } [lduanserver ~]$这里password{‘haha001’|password_hash(sha512)}}的意思是用password_hash 函数调用sha512这个哈希算法对字符串haha001 进行加密。 到server2上验证因为 root用 su 命令切换到任何用户都不需要密码所以这里先切换到lduan 用户然后再切换到lisi用户测试密码是不是正确。 [rootserver2 ~]# su -lduan [lduanserver2 ~]$ su -lisi 密码 haha001 [lisiserver2 ~]$ exit 注销 [lduanserver2 ~]$ exit 注销 [rootserver2 ~]#可以看到用户的密码是 haha001。 下面把 lisi 用户删除命令如下。 [1duanserver ~]$ ansible server2 -m user -a namelisi stateabsent removeyes server2 | CHANGED { ...输出... [lduanserver ~]$这 里 removeyes 的意思类似于 userdel 中 的 -r 选项删除用户的同时把家目录也删除。 29.19 使用get_url 模块下载文件 如果想从服务器上下载到被管理机器上需要使用到 get_url 模块。get_url 模块常见的参 数包括以下几个。 (1) url: 指定文件的 URL 连接。 (2) dest: 指定存储在哪里。 例如现在要把 ftp://ftp.rhce.cc/auto/web.tar.gz下载到 scrver2 的/opt 目录中命令如下。 [1duanserver ~]$ ansible server2 -m get_url -a urlftp://ftp.rhce.cc/auto/web.tar.gz dest/opt/ server2 | CHANGED { ...输出... [lduanserver ~]$然后到 server2 上验证命令如下。 [rootserver2 ~]# ls /opt/ 11.txt aa.txt bb.txt hosts web.tar.gz [rootserver2 ~]#可以看到已经把文件下载下来了。 29.20 使用setup模块获取被管理主机信息 如果想获取被管理主机的系统信息可以使用 setup 模块。下面获取 server2 上的信息命令如下。 [lduanserver ~]$ ansible server2 -m setup server2 | SUCCESS { ansible_facts:{ ansible_all_ipv4_addresses:[ 192.168.26.102 ...大量输出... changed:false } [lduanserver ~]$setup 中所获取的变量叫作 fact 变量这里都是以 key: value的格式输出大致结构如下。 键 1: 值 键 2: {子键a: 值 a子键b: 值 b ... }如果想获取“键1”的值可以通过参数 “filter键” 或 “filter键.子键” 来过滤。例如要获取server2上所在机器 BIOS的版本可以通过键值ansible_bios_version来获取命令如下。 [lduanserver ~]$ ansible server2 -m setup -a filteransible_bios_version server2 | SUCCESS {ansible_facts:{ansible_bios_version:6.00,discovered_interpreter_python:/usr/libexec/platform-python },changed;false } [lduanserver ~]$如果想获取server上ipv4的所有信息可以通过键值ansible_default_ipv4来获取命令如下。 [lduanserver ~]$ ansible server2 -m setup -a filteransible_default_ipv4 server2 | SUCCESS {ansible_facts:{ansible_default_ipv4:{address:192.168.26.102,alias:ens160,...输出..network: 192.168.26.0,type:ether},discovered_interpreter_python:/usr/libexec/platform-python },changed:false }如果仅仅想获取IP地址信息其他网络信息不需要可以通过ansible_default_ipv4 的子键来获取命令如下。 [1duanserver ~]$ ansible server2 -m setup -a filteransible_default_ipv4.address server2 | SUCCESS {ansible_facts:{urscuvered_interpreter_python:/usr/libexec/platform-python },changed:false [lduanserver ~]$不过在命令行中如果 filter 含有子键结果是不会显示的所以上面的命令没有看到 IP。不过如果把这个键写入 playbook, 是会显示值的关于 playbook 后面会讲。 作业 在 ansible 主机上执行一条命令获取 server2 的总内存大小。在 ansible 主机上通过setup 模块获取 server2的主机名。把 ansible主机上的/etc/issue文件拷贝到 server2的 /opt目录中命名为 myissue,所有者为lduan, 所属组为 users,权限为444, SELinux的上下文为htpd_sys_content_t。在 server2 上安装 vsftpd 服务(请自行配置好 yum 源)。在 server2 上启动 smb服务并设置开机自动启动。在 server2 上配置 firewalld, 放行 samba服务重启系统也能生效。
http://www.zqtcl.cn/news/292819/

相关文章:

  • 深圳电子商务网站制作桂林市防疫最新政策
  • 北京网站建设备案代理网站建设计划建议
  • 湛江公司做网站wordpress如何设置网站地图
  • wordpress攻防优化方案
  • 义乌市建设银行分行网站宜春静态管理
  • 企业网站优化电话17做网店类似网站
  • 南京网站建设黄页网站大全在线看免费
  • 网站开发过程记录定制西服
  • 长沙有哪些网站建设公司用vue做网站的实例
  • 购物网站模板 php网页设计图片剧中
  • 嘉峪关市建设局网站横沥镇网站建设公司
  • 查找网站软件培训记录
  • 注册网站安全吗制作人漫画
  • jeecms 怎么建设网站嵌入式软件开发兼职
  • 百度怎么自己做网站四川省建设工程交易中心网站
  • 中介如何做网站收客wordpress 运行代码
  • 网页设计与网站建设考试题目如何做建议的网站
  • 网站怎么推广软文政务网站建设存在问题
  • 公司官方网站建设需要多少钱wordpress单页面制作
  • 社群网站建设网站推广的方式有哪几种
  • 培训机构活动策划网站wordpress 改端口
  • 北京网站制作与营销培训用asp做网站视频
  • 江苏丹阳建设公司网站做网站中的剪辑图片
  • 纯静态网站怎样广州工程造价信息网
  • 为什么网页不能打开建设银行网站企业网站开发综合实训
  • 企业网站制作 深圳网站建站行业公司主页建设
  • 外汇直播网站建设开发做网站空间商需要办什么手续
  • 源码哥网站的模板皮肤病在线咨询医生免费咨询
  • 温岭市市住房和城乡建设规划局网站附近的电脑培训班在哪里
  • 网站备案百度站长提交减肥网站源码