ANSIBLE的Ad-hoc和Inventory基本使用

  • A+

一.Ansible常用模块

  1. Ping模块:测试连通性  
  2. file模块:文件管理,创建、删除文件或目录  
  3. copy模块:拷贝文件  
  4. shell: 执行shell命令  
  5. yum模块:下载应用(CentOS)  
  6. apt模块:下载应用(Ubuntu)  
  7. user模块:管理用户  
  8. Fetch模块:从远程主机拉取文件到ansible服务器  
  9. Blockinfile模块:在哪一行插入文本,可带行标签  
  10. Lineinfile模块:编辑文本,如在哪一行插入  
  11. replace模块:替换文本  
  12. service模块: 管理服务器  

二.Ansible的常用命令和常用参数

1.Ansible常用命令

  1. ansible mytest -m setup #产看指定主机server1上的facts变量信息  
  2. ansible * -m setup #查看指定的所有主机上的facts变量信息  
  3. ansible-doc -l #列出有哪些可用的模块,按q退出  
  4. ansible-doc -l | wc -l #列出有多少个可用的模块  
  5. ansible-doc -l | grep user #列出与user有关的模块  
  6. ansible-doc user: #查看user模块的帮助文档,按q退出。也可以在最后一行输入/passwd,来过滤与passwd有关的内容  
  7. ansible mytest -a 'df -h' #在test组执行df -h命令  

2.Ansible常用参数

  1. -m:要执行的模块,默认为command  
  2. -a:指定模块的参数  
  3. -u:ssh连接的用户名,默认用root,ansible.cfg中可以配置  
  4. -b,--become:变成那个用户身份,不提示密码  
  5. -k:提示输入ssh登录密码,当使用密码验证的时候用  
  6. -s:sudo运行  
  7. -U:sudo到哪个用户,默认为root  
  8. -K:提示输入sudo密码,当不是NOPASSWD模式时使用  
  9. -C:只是测试一下会改变什么内容,不会真正去执行  
  10. -c:连接类型(default=smart)  
  11. -f:fork多少进程并发处理,默认为5个  
  12. -i:指定hosts文件路径,默认default=/etc/ansible/hosts  
  13. -I:指定pattern,对已匹配的主机中再过滤一次  
  14. -list-host:只打印有哪些主机会执行这个命令,不会实际执行  
  15. -M:要执行的模块路径,默认为/usr/share/ansible  
  16. -o:压缩输出,摘要输出  
  17. --private-key:私钥路径  
  18. -T:ssh连接超时时间,默认是10秒  
  19. -t:日志输出到该目录,日志文件名以主机命名  
  20. -v:显示详细日志  

三.Ansible Ad-hoc

1.Ad-hoc是什么?

ad-hoc简而言之,就是"临时命令"。
场景一:在多台机器上,查看某个进程是否启动。
场景二:在多台机器上,拷贝指定日志文件到本地。
它是一个命令行工具
它适用于业务变更
它适用所见即所得

2.Ad-hoc怎么用?

1)列出目标主机/root目录下所有的文件

  1. [root@localhost ~]# ansible mytest -m shell -a "ls /root" --user=root  
  2. 192.168.150.121 | CHANGED | rc=0 >>  
  3. 560_file  
  4. anaconda-ks.cfg  
  5. direct_2G  
  6. initial-setup-ks.cfg  
  7. outputme.txt  
  8. pcre2-10.35  
  9. pcre2-10.35.tar.gz  
  10.   
  11. 192.168.150.71 | CHANGED | rc=0 >>  
  12. 192.168.150.96  
  13. anaconda-ks.cfg  
  14. haopython2019  
  15. initial-setup-ks.cfg  
  16. jingfeng  
  17. jingfeng.zip  
  18. mydown  
  19. nginx-1.13.0  
  20. nginx-1.13.0.tar.gz  
  21. rpmbuild  
  22. www.dzcd.cn  
  23. [root@localhost ~]  

2)目标主机需要登录密码

先登录目标主机,注释掉公钥

  1. [root@yunkzbd ~]# cat .ssh/authorized_keys   
  2. ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDgsqYlTmbSYY6aQuh+ZeOtLzzGAMLly/EnXIYZ/KdaWg0HPyYW2i4kxiH0CERp71d69PQDDSDQd+GFbFOkN5mLkJVAkuoukNk9kjwwHZJcRgnikzVd+A0VORwG4Gsf8slUUsGoL8Sw6liLEyTJOWFgbaKnNVeyiZoLo8oIb6/zNPorkUHkSpUvk7dCZGbGmsXCieGCOQ04oblmJUwTmP5GokA7s3fH1qjU3X9TZMIW1084bMyAkObp6pzotSzSogJ5ciSgLufNNCCxhrBtIzijv+ygVUMEpfn2PqW7HpM0sTL/TZvQlVebnUrIFSw5orDAy+79jrSQ0Z1NZlxNKacd root@haopython.com  
  3. ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvM8/7ER6B0mVr7vlOxoY9xZ/GH3Ke2Bbq3yz3kPQzHuBn0RL+1RRWT5O15kETmSjQ2oYr72bRcaC7d8zj7/3X8eJ2TTgK0atzSklak/oqeL/3KBVM+wuhvQJzjWgHS1bfM9dR8Fuax69S+A/dc7UdddP9yfJVpQYuniYsCaDLL/VC332TnpLPwkhINC8Fab+FyV00BCynwS6ErzN1/IxXimr9Xefjkz6DKylRVtTlqA2+V0N6dIorOxqg9ES3gYyPuWlHS6C7aTHfF+vyTqHgqNbvQFgQ0xPPvnH7mLWjqdQbSNhDWo3Ue10PO7q1+/F4py1BWfBXtjVJI+z3LR/t root@localhost.localdomain  
  4. [root@yunkzbd ~]# pwd  
  5. /root  
  6. [root@yunkzbd ~]# cd .ssh  
  7. [root@yunkzbd .ssh]# ll  
  8. 总用量 4  
  9. -rw-------. 1 root root 808 9月  24 11:16 authorized_keys  
  10. [root@yunkzbd .ssh]  

#
ansible默认是以公钥的形式登录,如果要用密码登录,需在后面加上参数--ask-pass

  1. [root@localhost ~]# ansible mytest -m shell -a "ls /root" --user=root --ask-pass  
  2. SSH password:   
  3. 192.168.150.71 | CHANGED | rc=0 >>  
  4. 192.168.150.96  
  5. anaconda-ks.cfg  
  6. haopython2019  
  7. initial-setup-ks.cfg  
  8. jingfeng  
  9. jingfeng.zip  
  10. mydown  
  11. nginx-1.13.0  
  12. nginx-1.13.0.tar.gz  
  13. rpmbuild  

四.Ansible Inventory

1.Inventory是什么?

定义主机关系的文件
默认路径为/etc/ansible/hosts
inventory,也就是主机清单。在大规模的配置管理工作中,特别是云服务提供商或者IDC厂家,需要管理不同业务的不同机器,这些机器的信息都存放在Ansible的inventory组件里面。在我们使用Ansible进行远程主机管理时,必须先将主机信息存放在inventory里面,这样才能使用Ansible对它进行操作。默认情况下,Ansible的inventory是一个静态的INI格式的文件。

2.Ansible Inventory详解

Inventory文件用来定义你想控制管理的服务器,默认配置文件是/etc/ansible/hosts,如下是一个简单的例子:

  1. ## [webservers]  
  2. ## alpha.example.org  
  3. ## beta.example.org  
  4. ## 192.168.1.100  
  5. ## 192.168.1.110  
  6.   
  7. # If you have multiple hosts following a pattern you can specify  
  8. # them like this:  
  9.   
  10. ## www[001:006].example.com  
  11.   
  12. # Ex 3: A collection of database servers in the 'dbservers' group  
  13.   
  14. ## [dbservers]  
  15. ##   
  16. ## db01.intranet.mydomain.net  
  17. ## db02.intranet.mydomain.net  
  18. ## 10.25.1.56  
  19. ## 10.25.1.57  
  20.   
  21. # Here's another example of host ranges, this time there are no  
  22. # leading 0s:  
  23.   
  24. ## db-[99:101]-node.example.com  
  25. [mytest]  
  26. 192.168.150.121  
  27. 192.168.150.71  
  28. [root@localhost ~]  

[mytest]

服务器分组的名称,指定组名。主机可以直接用ip地址,也可以用域名,还可以用数字和字母指定一批连续的服务器。

如果多台主机的管理账户各有不同的话,我们也可以在Inventory文件中处理,分割进行设置:

  1. [myweb]  
  2. 192.168.150.20 ansible_ssh_user=root  
  3. 192.168.150.21 ansible_ssh_user=moonrong  
  4. 192.168.150.22 ansible_ssh_host=192.168.150.22 ansible_ssh_port=36000  
  5. [production]  
  6. 192.168.150.20  
  7. 192.168.150.22  
  8. mydb ansible_ssh_user=work ansible_ssh_private_key_file=/home/work/.ssh/id_rsa   

上面链接参数的含义:

  1. ansible_ssh_user--->用于管理远程主机的用户名  
  2. ansible_ssh_host--->用于指定被管理主机的端口  
  3. ansible_ssh_port---->用于指定ssh连接端口  
  4. ansible_ssh_private_key_file--->指定ssh key文件  
  5. host_key_checking=False 当你第一次连接远程主机的时候,会提示yes/no,设置为False会跳过这个环节。  
moonrong
  • 版权声明:本站原创文章,于2020年9月27日15:38:20,由 发表,共 4630 字。
  • 版权声明: 本文由于2020年9月27日15:38:20 发表在 好派笔记,共 4630 字。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: