设为首页 收藏本站
查看: 1228|回复: 0

[经验分享] 自动化批量部署工具Ansible笔记之ansible安装与Inventory文件

[复制链接]

尚未签到

发表于 2018-7-30 11:04:45 | 显示全部楼层 |阅读模式
  自动化批量部署工具Ansible笔记之ansible安装与Inventory文件
  一、ansible简介
  ansible是一款自动化运维部署工具,与saltstack,pupet等不同的是,ansible没有采用C/S的架构,即没有客户端与服务端之分。这也就意味着,ansible的安装更加方便,管理节点更加灵活(任何一台安装了ansible的机器都可以充当管理节点)。
  ansible提供了丰富的模块来方便的完成管理任务,对于复杂的管理任务来说,ansible通过编写playbook的方式来批量执行。而且ansible也可以并发的执行操作,可以同时在多台机器上执行playbook中的各个任务。
  对了,顺便说一句,ansible是基于ssh协议来实现的。
  二、ansible安装部署
  你可以访问ansible的github来找到ansible的源码,地址:https://github.com/ansible/ansible
  安装ansible时,并不会在你的机器上安装一个数据库或者任何的守护程序,你只需要很方便的在一台可以远程管理你的主机的机器上安装ansible就可以了,甚至可以是一台笔记本电脑。
  ansible管理节点的主机要求:
  1、python2.6或python2.7
  2、管理节点不支持windows系统
  3、适用系统包括Red Hat,CentOS,Debian,OS X,以及BSD系列的系统
  ansible被管理节点的主机要求:
  被管理节点需要安装python2.4以上的版本,但是如果python的版本低于python2.5的话需要安装依赖包python-simplejson(试用yum方式安装即可)
  注意:
  1、ansible的“raw”模块和“script”模块不需要python-simplejson,所以你可以使用这两个模块来安装这个文件;
  2、如果你在远程管理节点上开启了SElinux,那么在你使用“copy/file/template”功能前,要安装libselinux-python包,你可以用ansible的yum模块来安装这个包;
  3、在默认没有安装python2.X而是安装了python3.X的系统上,你可以自己安装python2.X版本,然后通过设置ansible_python_interpreter环境变量来指定你安装的python2.6的路径。
  在管理节点上安装ansible:
  本文在CentOS 6.5系统上通过yum方式安装ansible且机器上已经安装了epel源,其他系统安装方式请参照官方文档。
    [root@localhost ~]# yum -y install ansible  ansible配置文件中常用的配置项:
[defaults]  
inventory      = /etc/ansible/hosts    //指定hosts文件路径,文件中记录了被管理节点以及其分组
  
sudo_user      = root        //指定sudo用户为root
  
timeout = 10        //指定ssh的超时时间,该值适当改大一些,避免ssh超时引起的错误
  三、ansible命令常用选项
  ansible命令格式:
  ansible <主机组> [选项] [-m 模块名称] [-a 参数]
常用选项如下:  
-v, --verbose
  冗长模式,输出更多的成功任务信息
  

  
-i PATH, --inventory=PATH
  指定默认的inventory文件路径,默认为/etc/ansible/hosts
  

  
-f NUM, --forks=NUM
  并发数,此处的NUM应该被设定为一个整数,默认为5
  

  
--private-key=PRIVATE_KEY_FILE
  设置默认的ssh链接认证的文件
  

  
-m NAME, --module-name=NAME
  指定模块名称
  

  
-M DIRECTORY, --module-path=DIRECTORY
  指定寻找模块的路径,默认路径在/usr/share/ansible。这个功能也可以通过设置环境变量ANSIBLE_LIBRARY来实现
  

  
-a 'ARGUMENTS', --args='ARGUMENTS'
  传递给模块的参数
  

  
-k, --ask-pass
  提示输入ssh登录密码
  

  
-K, --ask-sudo-pass
  提示输入sudo密码
  

  
-o, --one-line
  单行输出
  

  
-s, --sudo
  使用-u选项指定的用户执行命令和sudo到root用户(翻译的有点问题)
  

  
-t DIRECTORY, --tree=DIRECTORY
  将输出的内容保存到指定的目录下,文件以主机地址的形式被保存在该目录下
  

  
-T SECONDS, --timeout=SECONDS
  连接主机的超时时间
  

  
-B NUM, --background=NUM
  在后台运行命了,超过该选项设置的时间后杀死任务
  

  
-P NUM, --poll=NUM
  每NUM秒检查后台运行的任务,需要-B选项
  

  
-u USERNAME, --user=USERNAME
  使用该远程用户名替换当前的用户名
  

  
-U SUDO_USERNAME, --sudo-user=SUDO_USERNAME
  从root用户sudo到该选项指定的用户
  

  
-c CONNECTION, --connection=CONNECTION
  连接类型,可选的类型有paramiko(SSH),ssh和local。local最常用于crontab和kickstarts
  

  
-l SUBSET, --limit=SUBSET
  进一步限制被选择的主机/主机组模式
  

  
-l ~REGEX, --limit=~REGEX
  使用正则表达式进一步限制主机
  

  
--list-hosts
  列出匹配到的所有主机,不执行任何操作
  四、Inventory文件
  ansible通过inventory文件来获取操作的主机,默认情况下,该文件被存储在/etc/ansible/hosts。而且可以同时使用多个inventory文件,或者动态的获取inventory文件。
  1、主机和主机组
  如下是一个inventory文件的内容,内容具有INI风格:
[webserver]  
192.168.1.125
  
192.168.1.126
  

  
[dbserver]
  
192.168.1.10
  
www.example.com
  
192.168.1.12:3300
  其中,“[]”内的内容是组名,其下为各主机的IP或域名,同一主机可以同时放在不同的组中,其后可以指定端口号。
  当有大量的主机名类似的主机时,可以不用一条一条添加,可以如下所示来添加:
[webserver]  
www[01:50].example.com
  上述方法可以一次添加50台机器。除了使用数字范围外,还可以使用字母范围。比如:
[dbserver]  
db-[a:f].example.com
  在inventory文件中可以指定每台主机的链接类型和链接用户:
[testserver]  
10.1.1.1ansible_connection=local
  
10.1.1.2ansible_connection=sshansible_ssh_user=test
  2、主机变量
  在inventory文件中可以为每台主机指定变量,变量可以用于playbook中:
[testserver]  
host1http_port=80
  
host2http_port=8088
  3、主机组变量
  如果某个主机组中所有主机都需要指定相同的变量,即可使用主机组变量,使用:vars后缀可以使变量生效:
[testserver]  
host1
  
host2
  

  
[testserver:vars]
  
ntp_server=ntp.example.com
  
proxy=proxy.example.com
  4、主机组的组,和组变量
  可以将主机组再放入另一个组中使用:children后缀来组成新的组,也可以使用变量:
[testserver]  
host1
  
host2
  

  
[webserver]
  
host2
  
host3
  

  
[group:children]
  
testserver
  
webserver
  

  
[group:vars]
  
system_timeout=30
  (本文部分翻译自ansible官方文档,如有翻译不准的地方烦请指正!)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-543499-1-1.html 上篇帖子: L13 ansible 基础应用与常见模块 下篇帖子: ansible&Tower无限hosts的License修改方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表