执行shell命令(command和shell) 文件传输(copy和file) 管理软件包(yum) 用户和组(user) 从源代码管理系统部署(git) 管理服务(service) 收集目标主机信息(setup)  
1 [root@k8s-node2 ~]# ansible webservers -a "df -hl" 
用来在远程主机上执行命令,使用-m 选项指定使用shell模块 
Command与Shell比较
command 和 shell 模块都可以在远程主机上执行命令 
但是command不支持变量和管道符操作,所以当需要使用到变量和管道符时需要使用shell模块 
 
 
 
1 2 3 4 5 [root@k8s-node2 ~]# ansible webservers -m shell -a "ifconfig | grep '192.168.56'" 192.168.56.66 | CHANGED | rc=0 >>         inet 192.168.56.66  netmask 255.255.255.0  broadcast 192.168.56.255 192.168.56.65 | CHANGED | rc=0 >>         inet 192.168.56.65  netmask 255.255.255.0  broadcast 192.168.56.255 
5.2
https://docs.ansible.com/ansible/latest/user_guide/intro_adhoc.html 
copy:文件传输模块,可以将文件并行拷贝到多台主机上 
1 2 [root@k8s-node2 ~]# touch file_test.txt [root@k8s-node2 ~]# ansible webservers -m copy -a "src=/root/file_test.txt dest=/tmp/file_test.txt" 
使用copy模块传输文件时,可以通过参数设置文件属主、属组和权限 
 
1 [root@k8s-node2 ~]# ansible webservers -m copy -a "src=/root/file_test.txt dest=/tmp/ owner=root group=root mode=600" 
使用file模块可以创建文件和更改文件的所有和权限 
 
1 2 3 [root@k8s-node2 ~]# ansible webservers -m file -a "dest=/tmp/file_test.txt mode=666" -l 192.168.56.65 #  修改远程文件权限为:666; #  -l 指定运行目标主机(过滤),从webservers主机组中找出满足过滤条件的主机来执行远程操作。 
1 2 #  创建文件夹 [root@k8s-node2 ~]# ansible webservers -m file -a "dest=/tmp/dir_test owner=root state=directory" 
1 2 3 4 #  创建文件 [root@k8s-node2 ~]# ansible webservers -m file -a "dest=/tmp/t1.txt owner=root state=touch" #  删除文件 [root@k8s-node2 ~]# ansible webservers -m file -a "dest=/tmp/file_test.txt state=absent" 
1 2 3 4 #  安装 [root@k8s-node2 ~]# ansible webservers -m yum -a "name=tcpdump state=latest" #  卸载 [root@k8s-node2 ~]# ansible webservers -m yum -a "name=tcpdump state=absent" 
在所有服务器中创建test用户,若已存在,不进行任何操作 
 
1 [root@k8s-node2 ~]# ansible all -m user -a 'name=test' 
在所有服务器中删除test用户,但不删除此用户的家目录 
 
1 [root@k8s-node2 ~]# ansible all -m user -a 'name=test state=absent' 
在所有服务器中删除test用户,且删除此用户的家目录 
 
1 [root@k8s-node2 ~]# ansible all -m user -a 'name=test state=absent remove=yes' 
指定所有服务器中test用户的基本组为admin(需提前存在),不指定时默认与用户名一样 
 
1 [root@k8s-node2 ~]# ansible all -m user -a 'name=test group=admin' 
指定所有服务器中test用户的附加组为root和admin 
 
1 [root@k8s-node2 ~]# ansible all -m user -a 'name=test groups=root,admin append=yes' 
指定所有服务器中test用户过期时间是2020-05-20 
 
1 2 3 [root@k8s-node2 ~]# date -d 2021-05-20 +%s            #获取对应日期的unix时间戳 1621440000 [root@k8s-node2 ~]# ansible all -m user -a 'name=test expires=1621440000' 
修改所有服务器中test用户的密码为’123455’ 
 
1 2 3 4 5 6 [root@k8s-node2 ~]# python > >> import crypt > >> crypt.crypt('123455' ) '$6$B0zo/bCGaUmqFKx8$apGEf9i1Yd4/PE.bhL7P86T6FDir45jE5DQ549CjG3SoWtfPmAQSCDkz2Wt5kXppAlhbTLqOclg45yOz7YH9K/' > >> exit () [root@k8s-node2 ~]# ansible all -m user -a 'name=test password="$6$B0zo/bCGaUmqFKx8$apGEf9i1Yd4/PE.bhL7P86T6FDir45jE5DQ549CjG3SoWtfPmAQSCDkz2Wt5kXppAlhbTLqOclg45yOz7YH9K/"' 
为所有服务器中test用户生成ssh密钥对,生成在/opt目录下,私钥名id_rsa_test,注释信息"test rsa",私钥密码123455 
 
1 [root@k8s-node2 ~]# ansible all -m user -a 'name=test generate_ssh_key=yes ssh_key_file=/opt/id_rsa_test ssh_key_comment="test rsa" ssh_key_passphrase=123455' 
1 2 #  拉取ansible代码 [root@k8s-node2 ~]# ansible 192.168.56.66 -m git -a "repo=https://github.com/ansible/ansible.git dest=/tmp/ansible" -u root 
主要是管理服务:启动服务、停止服务 
几种服务: started 、 restarted 、 stopped 
 
1 2 3 4 5 6 #  安装 memcached [root@k8s-node2 ~]# ansible webservers -m yum -a "name=memcached state=latest" #  启动 memcached [root@k8s-node2 ~]# ansible webservers -m service -a "name=memcached state=started" #  设置ansible开机自启动 [root@k8s-node2 ~]# ansible webservers -m service -a "name=memcached enabled=true" 
1 2 3 4 5 [root@k8s-node2 ~]# ansible webservers -m setup                                # 获取主机的信息 [root@k8s-node2 ~]# ansible webservers -m setup -a "filter=ansible_nodename"            # 获取集群名称 [root@k8s-node2 ~]# ansible webservers -m setup -a "filter=ansible_all_ipv4_addresses"     # 获取ipv4地址 [root@k8s-node2 ~]# ansible webservers -m setup -a "filter=ansible_memory_mb"           # 获取主机内存 [root@k8s-node2 ~]# ansible webservers -m setup -a "filter=*mb"          "           # 通过通配符实现模糊匹配,比如以”mb”关键字结尾的信息 
ansible_all_ipv4_addresses:仅显示ipv4的信息。仅显示磁盘设备信息。显示是什么系统,例:centos,suse等显示是系统主版本仅显示系统版本显示系统类型,例:32位,还是64位仅显示eth0的信息仅显示主机名仅显示内核版本显示lvm相关信息显示系统总内存显示可用系统内存详细显示内存情况显示总的swap内存显示swap内存的可用内存显示系统磁盘挂载情况显示cpu个数(具体显示每个cpu的型号)显示cpu个数(只显示总的个数)
 
                
                __END__