ansible基础使用

ansible基础
ansible是基于Python研发,实现了批量操作系统配置,批量程序部署,批量执行命令等功能的IT自动化和DevOps软件。自动化运维和运维开发两个职位、下一步架构工程师、
ansible可以实现:自动化部署APP;自动化管理配置项;自动化持续交付;自动化(AWS)云服务管理。
ansible优点:只需要SSH和Python即可使用;无客户端;ansible功能强大,模块丰富;上手容易,门槛低;基于Python开发,做二次开发更容易;使用公司比较多,社区活跃。
ansible特性:模块化设计,调用特定的模块完成特定任务;基于Python语言实现(paramiko、PyYAML半结构化语言、Jinja2);其模块支持JSON等标准输出格式,可以采用任何编程语言重写。部署简单;主从模式工作;支持自定义模块;支持playbook;易于使用;支持多层部署;支持异构IT环境。
ansible主机工作流程:主机的集合,命令的集合
对管理主机:要求Python 2.6或Python 2.7
ansible使用的模块:paramiko、PyYAML、Jinmja2、httpdlib2、six
对于被托管主机的要求:ansible默认通过SSH协议管理机器;被管理主机要开启ssh服务,允许ansible主机登录;在托管节点上也需要安装Python2.5或以上的版本;如果托管节点上开启了SELinux,需要安装libselinux-python
4.执行ansible命令时会调用配置文件去执行,调用配置文件的顺序如下:
首先检测ANSIBLE——CONFIG变量定义的配置文件
其次检查当前目录下的./ansible.cfg文件
再次检查当前用户家目录下~/ansible.cfg文件
最后检查/etc/ansible/ansible.cfg文件(是ansible的默认配置文件路径)
!!!也就是说有自定义配置文件时,要切换到该自定义配置文件所在的目录才能执行ansible命令。!!!

一、部署ansible
1.启动6台虚拟机:2cpu,1.5G以上内存,10G以上硬盘,1块网卡
ansible 192.168.1.40 管理主机
web1 192.168.1.41 托管主机
web2 192.168.1.42 托管主机
db1 192.168.1.43 托管主机
db2 192.168.1.44 托管主机
cache 192.168.1.45 托管主机
2.真机
]# cp -a /linux-soft/04/ansible /var/ftp/
]# createrepo /var/ftp/ansible/
]# base-vm ansible web1 web2 db1 db2 cache
3.给每台机配IP,改主机名,配yum源
]# eip 40
]# hostnamectl set-hostname ansible
]# vim /etc/yum.repos.d/local.repo
搭建阿里云yum仓库
[aliyun_os]
name=aliyun_os
baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/
enabled=1
gpgcheck=0

[aliyun_extras]
name=aliyun_extras
baseurl=https://mirrors.aliyun.com/centos/7/extras/x86_64/
enabled=1
gpgcheck=0

[aliyun_epel]
name=aliyun_epel
baseurl=https://mirrors.aliyun.com/epel/7/x86_64/
enabled=1
gpgcheck=0

4.给ansible主机装软件
]# yum -y install ansible
]# ansible --version #查版本ansible 2.4.2.0
]# ansible-config dump | grep -i fork
DEFAULT_FORKS(default) = 5 #改为大一点,比如50,一次可以执行的主机数量
]# vim /etc/ansible/ansible.cfg
forks = 100 #改第19行把5改大
5.改配置文件ansible主机
]# vim /etc/ansible/ansible.cfg
inventory = /etc/ansible/hosts #14行去除注释即可,托管主机群文件路径
host_key_checking = False #61行去除注释即可,ssh管理主机时不需要输入yes
6.定义hosts主机名
]# vim /etc/hosts #增加以下内容
192.168.1.40 ansible
192.168.1.41 web1
192.168.1.42 web2
192.168.1.43 db1
192.168.1.44 db2
192.168.1.45 cache
]# scp /etc/hosts root@192.168.1.41:/etc/
7.定义主机名
]# vim /etc/ansible/hosts #在最后面增加以下内容
[web]
web1 #也可以写成web[1:2],如果有10台可以写成web[1:10];也可以写IP地址,如:192.168.1.[41:42]

[db]
db1
db2

[other]
cache
8.ansible命令基础:ansible 主机集合 -m 模块名称 -a 模块参数
主机集合:主机名或分组名,多个使用“逗号分隔”
-i inventory文件路径,或可执行脚本
-k 使用交互式登录密码
-e 定义变量
-v 显示详细信息
]# ansible web --list-hosts #显示所有web组的主机
]# ansible db --list-hosts #显示所有db组的主机
]# ansible web1 --list-hosts #显示web1主机
]# ansible web1,db --list-hosts #显示web1主机和所有db组的主机
]# ansible all --list-hosts #显示所有的主机
]# ansible web -m ping #报错,因为没有密码,可以先设置免密登录
]# ansible web -m ping -k #输入密码
9.创建一对密钥,设置免密登录
]# cd /root/.ssh
]# ssh-keygen -t rsa -b 2048 -N ‘’ -f key
]# ssh-copy-id -i key.pub web1 #输入密码
]# ssh-copy-id -i key.pub web2 #输入密码
]# ssh-copy-id -i key.pub db1 #输入密码
]# ssh-copy-id -i key.pub db2 #输入密码
]# ssh-copy-id -i key.pub cache #输入密码
10.验证免密
]# ssh -i /root/.ssh/key web1
]# ssh -i /root/.ssh/key web2
]# ssh -i /root/.ssh/key db1
]# ssh -i /root/.ssh/key db2
]# ssh -i /root/.ssh/key cache
11.如果连接的远程主机是个普通用户,应按以下操作
]# vim /etc/ansible/ansible.cfg
[defaults]
inventory = inventory
remote_user = zhangsan

[priviledge_escalation] #提权
become = yes #需要切换用户
become_method = sudo #切换的方式是sudo(另一种方式是su)
become_user = root #切换成管理员
become_ask_pass = no #不询问切换密码
]# vim /etc/sudoers #被管理的服务器,需要配置sudo
zhangsan ALL=(ALL) NOPASSWD: ALL

二、inventory扩展参数
1.设置免密路径一
]# vim /etc/ansible/hosts #增加以下内容,对other组申明密钥对路径
[other:vars]
ansible_ssh_private_key_file="/root/.ssh/key"
]# ansible other -m ping
2.设置免密路径二
]# vim /etc/ansible/hosts #增加以下内容,对所有主机申明密钥对路径
[all:vars]
ansible_ssh_private_key_file="/root/.ssh/key"
]# ansible all -m ping #验证
3.设置免密路径三
]# vim /etc/ansible/hosts #增加以下内容,对db2主机申明密钥对路径
[db]
db1
db2 ansible_ssh_private_key_file="/root/.ssh/key"
]# ansible db2 -m ping #验证
4.设置端口
]# vim /etc/ansible/hosts #增加以下内容,对db2主机申明ssh端口号
[db]
db1
db2 ansible_ssh_port=222 #同时db2主机的ssh配置文件的端口改为222,重启sshd服务才有效。ansible_ssh_user=用户名
]# vim /etc/ssh/sshd_config #db2主机修改端口号
Port 222
]# systemctl restart sshd #db2主机重启sshd服务
]# ssh 192.168.1.44 #在ansible主机远程测试,报错
]# ssh -p 222 192.168.1.44 #在ansible主机远程测试,成功
]# ansible db2 -m ping # #在ansible主机测试,成功
5.设置子组
]# vim /etc/ansible/hosts #定义子组,增加以下内容
[app:children]
web #web组
db #db组
]# ansible app --list-hosts

三、自定义配置文件
1.自定义配置文件
]# mkdir /myansible
]# cd /myansible
]# vim ansible.cfg
[defaults]
inventory = myhosts
host_key_checking = False
]# vim myhosts
[app1]
web1
db1
]# ansible app1 --list-hosts #要在当前/myansible目录下才可以执行此命令
2.利用脚本自定义配置文件
]# mkdir /myansible
]# cd /myansible
]# vim ansible.cfg
[defaults]
inventory = aa.py
host_key_checking = False
]# vim aa.py
#!/usr/bin/python
import json
hostlist = {}
hostlist[“aa”] = [“web1”,“db2”]
hostlist[“bb”] = [“web2”,“db1”,“cache”]
print json.dumps(hostlist)
]# chmod 755 aa.py
]# ./aa.py
]# ansible aa --list-hosts #要在当前/myansible目录下才可以执行此命令
]# ansible bb --list-hosts #要在当前/myansible目录下才可以执行此命令

四、ansible模块:
1.ansible-doc:模块的手册相当于shell的man
]# ansible-doc -l #列出所有模块
]# ansible-doc aci_ap #查看aci_ap的帮助,aci_ap是用ansible-doc -l命令查的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值