前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ANSIBLE的Ad-hoc和Inventory基本使用

ANSIBLE的Ad-hoc和Inventory基本使用

原创
作者头像
好派笔记
修改2021-09-14 14:52:04
6900
修改2021-09-14 14:52:04
举报
文章被收录于专栏:好派笔记
一.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. 192.168.150.71 | CHANGED | rc=0 >>  
  11. 192.168.150.96  
  12. anaconda-ks.cfg  
  13. haopython2019  
  14. initial-setup-ks.cfg  
  15. jingfeng  
  16. jingfeng.zip  
  17. mydown  
  18. nginx-1.13.0  
  19. nginx-1.13.0.tar.gz  
  20. rpmbuild  
  21. www.dzcd.cn  
  22. [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. # If you have multiple hosts following a pattern you can specify
  7. # them like this:
  8. ## www[001:006].example.com
  9. # Ex 3: A collection of database servers in the 'dbservers' group
  10. ## [dbservers]
  11. ## 
  12. ## db01.intranet.mydomain.net
  13. ## db02.intranet.mydomain.net
  14. ## 10.25.1.56
  15. ## 10.25.1.57
  16. # Here's another example of host ranges, this time there are no
  17. # leading 0s:
  18. ## db-[99:101]-node.example.com
  19. [mytest]  
  20. 192.168.150.121  
  21. 192.168.150.71  
  22. [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会跳过这个环节。  

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.Ansible常用模块
  • 二.Ansible的常用命令和常用参数
  • 三.Ansible Ad-hoc
  • 四.Ansible Inventory
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档