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

[经验分享] Ansible基础

[复制链接]

尚未签到

发表于 2018-1-2 12:32:47 | 显示全部楼层 |阅读模式
  Ansible是一种集成IT系统配置管理、应用部署、执行特定任务的开源平台
  特点:
  部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作
  默认使用SSH协议对设备进行管理
  主从集中化管理,配置简单、功能强大、扩展性强
  支持API及自定义模块、可通过python轻松扩展
  通过Plybooks来定制强大的配置、状态管理
  对云计算平台,大数据都有很好的支持
  提供一个功能强大、操作性强的Web管理界面和REST API 接口 ----AWX平台
  1、安装EPEL
  http://ftp.linux.ncsu.edu/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
  安装ansible
  yum install ansible -y
  2、修改主机与组配置
  vim /etc/ansible/hosts
  

## green.example.com  
#
# blue.example.com  
192.168.190.131
  
192.168.190.132
  

  

  
[webservers]
  
## alpha.example.org
  
## beta.example.org
  
192.168.190.131
  
192.168.190.132
  

  测试连通性
  

[iyunv@melon ~]# ansible 192.168.190.132 -m ping -k  
SSH password:
  
192.168.190.132 | SUCCESS => {
  "changed": false,
  "ping": "pong"
  
}
  

  3、配置linux主机ssh无密码访问
  

ssh-keygen -t rsa  #执行,有询问直接回车即可  

  完成后会在 /root/.ssh/ 下生成一对秘钥 ,id_rsa为密钥  id_rsa.pub为公钥(需要下发到被控主机用户.ssh目录,同时要求重新命名成authorized_keys 文件)
  使用ssh-copy-id公钥拷贝工具同步公钥至被控主机, 命令格式:/usr/bin/ssh-copy-id [-i [identity_file]] [user@machine]
  

ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.190.132  

  完成后运行ssh root@192.168.190.132,如直接进入目标root账号,说明配置成功
  在执行就不需要密码了
  

ansible 192.168.190.* -m ping  

  4、定义主机于组
  所有定义的主机与组规则都在 /etc/ansible/hosts 文件中,webservers 和 dbservers 为组名,紧跟着的主机为它的成员
  

192.168.190.131  
192.168.190.133
  

  
[webservers]
  
## alpha.example.org
  
## beta.example.org
  
192.168.190.131
  
192.168.190.133
  

  
[dbservers]
  
192.168.190.134
  
192.168.190.135
  

  5、主机可以用 域名、IP、别名进行标识
  别名定义例:
  

jpname ansible_ssh_port=22 ansible_ssh_host=192.168.190.149  

  组成员主机名称支持正则描述如:
  

[webservers]  
www[
01:50].example.com  
db
-[a:f].example.com  

  jpname为定义的一个别名,更多主机变量:
  

ansible_ssh_host    #连接目录主机的地址  
ansible_ssh_port    #连接目录主机的SSH端口,默认22无需指定
  
ansible_ssh_user    #连接目录主机的默认用户
  
ansible_ssh_pass    #连接目录主机的默认用户的密码
  
ansible_connection    #目录主机连接类型,可以使local、ssh、paramiko
  
ansible_ssh_private_key_file    #连接目录主机的ssh私钥
  
ansible_ssh_host    #指定采用非Python的其他脚本语言
  

  6、定义主机变量
  主机可以指定变量,以便后面提供Playbooks配置使用,例 定义host1和host2上Apache参数MaxRequestsPerChild,目的是让两台主机根据不同机器产生有差异的httpd.conf(类似于saltstack的pillar和state)
  

[testservers]  
host1 maxRequestsPerChild
=808  
host2 maxRequestsPerChild
=909  

  定义组变量(组变量的作用域是覆盖组的所有成员,通过定义一个新块,快名是:组名+:vars 组成)
  

[testservers]  
host1
  
host2
  

  
[testservers:vars]
  
maxRequestsPerChild
=808  

  变量的命名规则
  变量名的命名规则有字母、数字和下划线组合组成,变量必须以字母开头,不合法变量名:"12port"、"foo-port"、"foo port"、"foo.port"
  7、分离主机于组特定数据
  ansible支持将/etc/ansible/hosts 文件中的主机名于组变量剥离出来存在指定的文件夹中,采用YAML格式存放,存放位置规定:/etc/ansible/group_vars/+组名/etc/ansible/host_vars/+主机名
  例如:/etc/ansible/group_vars/webservers
  定义的webservers变量格式(定义的webservers要和hosts中定义的组名字一致)(YAML格式,变量名: 变量值)
  

maxRequestsPerChild: 808  

  /etc/ansible/group_vars/all (all文件内的变量表示对所有组都生效)

运维网声明 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-430789-1-1.html 上篇帖子: Ansible test 下篇帖子: ansible普通用户su切换问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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