Ansible配置部署

Ansible配置部署

运维工程师核心职能

平台架构组建: 搭建运维平台架构,负责架构设计的合理性和可维护性
日常运营保障: 负责保障运维软件稳定运行,对期间出现的问题快速定位并解决
性能优化: 使用自动化程序提升工程效率,优化程序性能

企业实际应用场景

Dev开发环境: 程序员的开发测试环境,部署开发软件
测试环境: QA测试工程师测试软件的功能和性能,判断是否达到项目的预期目标,生成测试报告
预发布环境: 使用和生产环境一样的数据库,缓存服务等配置,测试是否正常
发布环境: 由代码发布机或堡垒机发布代码至生产环境
生产环境: 对用户提供服务,由运维工程师负责
灰度环境: 为保险起见先让部分用户体验功能,没有重大问题的时候,再全量发布至所有服务器

程序发布过程:

1. 在调度器上下线一批主机(标记为maintenance 状态) 
2. 关闭服务
3. 部署新版本的应用程序
4. 启动服务
5. 在调度器上启用这一批服务器

自动化运维应用场景

文件传输
应用部署
配置管理
任务流编排

Ansible 特性

Ansible: 通过ssh协议,实现对远程主机的配置管理、应用部署、任务执行等功能

模块化: 调用特定的模块完成特定任务
基于python语言实现
安全性: 基于openssh
幂等性: 一个任务执行一次和多次效果一样,不因重复执行带来意外情况
支持playbook 编排任务,以YAML格式

Ansible注意事项与文件

执行Ansible的主机一般称为主控端,中控,堡垒机
主控端python版本需要2.6以上
被控端Python版本小于2.4,需要安装python-simplejson
windows不能成为主控端

/etc/ansible/ansible.cfg 主配置文件,配置ansible工作特性
[defaults]
#inventory=/etc/ansible/hosts   #主机列表配置文件
#remote_tmp=$HOME/.ansible/tmp  #临时py命令文件存放在远程主机目录
#local_tmp=$HOME/.ansible/tmp   #本机的临时命令执行目录
#forks=5                        #默认并发数
#sudo_user=root                 #默认sudo 用户
#ask_sudo_pass=True             #每次执行ansible命令是否询问ssh密码
#ask_pass=True   
#remote_port=22
host_key_checking = False    #检查对应服务器的host_key,建议取消注释
log_path=/var/log/ansible.log #日志文件,建议启用
module_name = shell           #默认模块,可以修改为shell模块

/etc/ansible/hosts   主机列表
#注: 目标主机使用了非默认的SSH端口,需要使用冒号加端口号来标明
[appsrvs]
10.0.0.[1:100]  #表示1-100的值
192.168.57.130
192.168.57.133

Ansible安装

基于epel源安装
vim /etc/yum.repos.d/epel.repo 
[epel]
name=epel
baseurl=https://mirrors.aliyun.com/epel/7/x86_64/
gpgcheck=0
yum install ansible

编译安装
yum -y install python-jinja2 PyYAML python-paramiko python-babel python-crypto
tar xf ansible-1.5.4.tar.gz
cd ansible-1.5.4
python setup.py build
python setup.py install
mkdir /etc/ansible
cp -r examples/* /etc/ansible

pip安装
pip 是安装Python包的管理器
yum install python-pip python-devel
yum install gcc glibc-devel zibl-devel rpm-bulid openssl-devel
pip install  --upgrade pip
pip install ansible --upgrade

Ansible命令

ansible 主程序,通过ssh协议,实现对远程主机的配置管理,应用部署,任务执行等功能
#建议: 使用ansible之前,先完成对所有远程主机的key验证
key验证: ssh-keygen  
         ssh-copy-id  10.0.0.8

ansible命令         
格式: ansible  主机组  选项   参数
选项:
   -v 显示过程,vvv更加详细
   -m 指定模块
   --list-host 显示主机列表
   -C 检查,并不真正执行
   -k 输入ssh连接密码
           
主机组:           
     ansible dbser -m ping 对dbser的主机
     ansible all -m ping 全部主机
     ansible 'dbser:!webser' -m ping  在dbser组中的,但不在webser组中的主机 
     ansible 'dbser:&webser' –m ping  在dbser组中的,并且在webser组中的主机

ansible命令执行过程
1. 加载自己的配置文件 默认/etc/ansible/ansible.cfg
2. 加载自己对应的模块文件,如:command
3. 通过ansible将模块或命令生成对应的临时py文件,并将该文件传输至远程服务器
4. 给文件+x执行
5. 执行并返回结果
6. 删除临时py文件,退出

执行状态提示:
绿色:执行成功并且不需要做修改的操作
黄色:执行成功并且对目标主机做修改
红色:执行失败

ansible其他相关工具

ansible-doc 查看模块帮助
    ansible-doc -l      #显示所有模块
    ansible-doc ping    #查看模块帮助
    ansible-doc -s ping #简单查看模块帮助

ansible-galaxy   此工具会连接https://galaxy.ansible.com下载相应的roles
    ansible-galaxy list #列出所有已安装的galaxy
    ansible-galaxy install geerlingguy.redis   #安装galaxy
    ansible-galaxy remove geerlingguy.redis    #删除galaxy
    
ansible-vault 加密解密yaml文件
    ansible-vault encrypt hello.yml #加密
    ansible-vault decrypt hello.yml #解密

ansible常用模块

Command模块
功能:在远程主机执行shell命令,此为默认模块
ansible dbser -a 'hostname'
ansible dbser -m command -a 'hostname'

Shell模块
功能:和command模块一样,支持变量
ansible dbser -m shell -a 'echo $PATH'
将shell模块代替command模块
vim /etc/ansible/ansible.cfg
module_name=shell

script模块
功能:在远程主机上运行ansible主机的脚本
ansible all -m script -a '/root/y.sh'

Copy模块
功能:从ansible主机复制文件到远程主机
ansible all -m copy -a 'src=/root/y.sh dest=/data/'

fetch模块
功能:从远程主机提取文件到ansible主机
ansible all -m fetch -a 'src=/etc/redhat-release dest=/data/'
ls /data/
10.0.0.18  10.0.0.28  10.0.0.8 

hostname模块
功能:修改主机名
ansible 10.0.0.8 -m hostname -a 'name=c8'

file模块
功能:文件管理
ansible srv -m file  -a 'path=/data/test.txt state=touch'  #创建文件
ansible srv -m file  -a 'path=/data/test.txt state=absent' #删除文件
   
yum模块
功能:管理rpm软件包
ansible all -m yum -a 'name=httpd state=present' #安装
ansible all -m yum -a 'name=httpd state=absent' #卸载

service模块
功能:服务管理
ensible dbser -m service -a 'name=httpd state=started enabled=yes'#开启服务
ansible dbser -m service -a 'name=httpd state=stopped'       #停止服务   
ansible dbser -m service -a 'name=httpd state=restarted'     #重启服务
ansible srv -m shell -a "sed -i 's/^Listen 80/Listen 8080/'  /etc/httpd/conf/httpd.conf"   #修改服务端口号
   
user模块
功能:用户管理
ansible all -m user -a 'name=yunge uid=2020 home=/home/yunge group=root create_home=yes shell=/bin/bash' #创建用户
ansible all -m user -a 'name=yunge state=absent remove=yes' #删除用户

group模块
功能:组管理
ansible all -m group -a 'name=yunge gid=99' #创建组
ansible all -m group -a 'name=yunge state=absent' #删除组

setup模块
功能:收集系统信息
ansible all -m setup
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值