自动化运维ansible

1.Ansible概述

ansible是新出现的自动化运维工具,基于python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

ansible可以同时管理Redhat系的Linux,Debian系的Linux,以及windows主机。管理节点只在执行脚本时与远程主机连接,没有特别的同步机制,所以断电等异常一般不会影响ansible

ansible是基于模块工作的,本身没有批量部署的能力,真正具有批量部署的ansible所运行的模块,ansible只是提供一种框架,主要包括:

  1. 连接插件connection plugins:负责和被监控端实现通信
  2. host inventory:指定操作的主机,是一个配置文件里定义监控的主机
  3. 各种核心模块,command模块、自定义模块
  4. 借助于插件完成记录日志邮件等功能
  5. playbook:剧本执行多个任务时,非必需2可以让节点一次性运行多个任务

2.部署ansible

yum -y install epel-release
yum -y install ansible	
ssh-keygen -t rsa	
ssh-copy-id root@192.168.10.10	
ssh-copy-id root@192.168.10.20
// 配置ssh免交互代理
ssh-agent bash	
ssh-add

3.Ansible模块

command模块

一般用于执行单条linux命令

ansible 192.168.10.10 -m command -a 'date'		//不指定模块则默认为command模块
cron模块

用于设置计划任务

ansible 192.168.10.10 -m cron -a 'minute="*" job="/usr/bin/echo hello >> /opt/test.txt" name="test"'	
ansible 192.168.10.10 -m cron -a 'name=test state=absent'
user模块

用于管理用户

ansible 192.168.10.10 -m user -a 'name="user"'	
ansible 192.168.10.10 -m user -a 'name="user" state=absent'	
ansible 192.168.10.10 -m user -a 'name="user" uid=1002 group=user01'	//设置uid和属组
copy模块

复制文件、目录及写入内容至文件

ansible all -m copy -a 'src=/etc/hosts dest=/opt/hosts.bak owner=root mode=640'	//复制文件,设置属主及权限
ansible all -m copy -a 'content="hello" dest=/opt/test'
file模块

管理文件、目录及创建软连接

ansible all -m file -a 'path=/opt/test state=touch'	
ansible all -m file -a 'path=/opt/test state=absent'	//删除
ansible all -m file -a 'path=/opt/var state=directory mode=755'		
ansible all -m file -a ‘path=/opt/test owner=web group=web mode=644’
shell模块

执行多条linux指令、并可以使用重定向、追加符号
特殊参数:
chdir:指定工作目录,在执行对应的命令之前,会先进入到chdir参数指定的目录中,等于cd命令
creates:指定一个文件,当指定的文件存在时,就不执行对应的命令
removes:使用此参数指定一个文件,当指定的文件不存在时,就不执行对应的命令

ansible all -m shell -a 'chdir=/opt/aa echo hello >> test.txt'
yum模块

管理软件

ansible all -m yum -a 'name=httpd'		//yum安装httpd
ansible all -m yum -a 'name=httpd state-absent'

YAML语言

playbook采用YAML格式配置文件
YAML是一种非标记语言。是用来写配置文件的语言,非常简洁和强大
YAML语法和其他语言类似,也可以表达散列表、标量等数据结构
结构通过空格赖表示,序列里配置项通过-来表示,Map里键值用:来分隔,YAML的扩展名为yaml

语法和注意点

大小写敏感
使用缩进表示层级关系
缩进时不允许使用Tab建,只允许使用空格
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

YAML支持的数据结构

1.对象:键值对的集合,又称为映射(mapping)/哈希(hashes)/字典(dictionary)

  • name: http server

2.数组:一组按次序排列的值,又称为序列(sequence)/列表(list)

  • nginx
  • tomcat

3.纯量:单个的、不可再分的值

  • number: 1,2

Playbook剧本

通过task调用ansible的模板将多个play组织在一个playbook中运行

playbook本身由以下各部分组成:

  1. Tasks:任务,即调用模块完成的某操作
  2. Variables:变量
  3. Templates:模板
  4. Handlers:处理器,当某条件满足时,触发执行的操作
  5. Roles:角色

一个完整的playbook主要构成:

  1. 主机组hosts
  2. 授权执行的用户remote_user
  3. 执行的任务tasks(调用ansible模块)
vi test.yaml
- hosts: webservers
  remote_user: root
  become: yes
  become_user: apache
  tasks:		
  - name: install http		
    yum: name=httpd			
    notify:		
    - restart httpd
  - name: start httpd
    service: name=httpd state=started
  handlers:			
   - name: restart httpd
     service: name=httpd state=restarted
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值