自动化运维工具----ansible

ansible是新出现的运维工具是基于Python研发的糅合了众多老牌运维工具的优点实现了批量操作系统配置、批量程序的部署、批量运行命令等功能。

主要模块以及功能:

1 command

2 user

3 group

4 cron

5 copy

6 file

7 ping

8 yum

9 service

10 shell

11 script

12 setup

13 playbooks

14 忽略错误

15 handler

ansible一般使用普通用户操作,如需使用root权限,可以设置sudo

主要有以下特点

ansible:   yum -y install ansible 模块化:调用特定的模块,完成特定的任务基于python语言实现,由paramiko,PyYAMAL和Jinja2三个关键模块:部署简单,agentless支持主从模式支持自定义模块支持Playbook幂等性:  同一个配置文件中执行的操作允许多少次结果都是一样

配置文件有

    配置文件:/etc/ansible/ansible.cfg/etc/ansible/hosts  主机清单

在使用前需要发布ssh密钥来实现自动部署

ssh-keygen -t rsa -P ''   -P密码为空
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.31.5
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.31.17
执行命令测试:ssh 192.168.31.5 'ifconfig'
问题:
ansible 192.168.31.5 -m command -a 'ifconfig'[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit
localhost does not match 'all'[WARNING]: Could not match supplied host pattern, ignoring: 192.168.31.5
解决:需要将主机写入/etc/ansible/hosts文件里面

查看文档说明

ansible-doc -s  command|user..... 查看文档说明

模块说明:

1 command模块

ansible all -m command -a 'ifconfig'ansible websrvs  -m command -a 'wget -O /tm/文件名 http://路径/文件'  给websrvs组内的主机下载文件

2 user模块   -a 'name=  state={present|absent}  system=.....'

ansible wesrvs -m user -a "name=hacluster state=present" 创建一个非系统用户
ansible wesrvs -m user -a "name=hacluster state=absent"   删除这个用户

3 group模块 -a 'name= gid= state=  system='

4 cron模块,用来生成计划任务 -a  'name= minute= hour= day= month= weekday= job= user=  state='

[root@centos7 ansible]# ansible all -m cron -a 'name="sync time form ntpserver" minute="*/10" job="/sbin/ntpdate us.pool.ntp.org &> /dev/null"'
192.168.31.5 | SUCCESS => {"changed": true, "envs": [], "jobs": ["sync time form ntpserver"]
}
192.168.31.17 | SUCCESS => {"changed": true, "envs": [], "jobs": ["sync time form ntpserver"]
}
[root@centos7 ansible]# crontab -l
#Ansible: sync time form ntpserver
*/10 * * * * /sbin/ntpdate us.pool.ntp.org &> /dev/null删除计划任务:ansible all -m cron -a 'name="sync time form ntpserver" state=absent' 指明name加上absent

5  copy模块; 文件复制  -a 'dest= src= mode=  owner= group='

ansible wesrvs -m copy -a 'src=/etc/fstab dest=/tmp/fstab.tmp mode=600' 复制文件,设置文件权限

6 file模块 :设置文件的属性

ansible all -m file -a 'path=/tmp/testdir state=directory'   创建一个目录
ansible all -m file -a 'path=/tmp/fstab.symlink state=link src=/tmp/fstab.tmp' 创建一个链接文件

7 ping模块 就时单独的ping,没有参数

ansible all -m ping

8 yum:执行yum的安装命令

ansible all  -m yum -a 'name=nginx state=latest' 安装包
ansible all  -m yum -a 'name=nginx state=absent' 卸载

9 service模块:设置和服务相关的配置 -a  'name= state={started|stopped|restarted} enabled='

ansible wesrvs -m service -a 'name=nginx state=started enabled=yes' 设置nginx启动,并开机自启动

10 shell  :执行命令

ansible all -m shell -a 'echo 123456 | passwd --stdin limi' 给用户创建密码,此用户必须先存在
使用 command模块会报错,需要放入一个子shell中所以使用shell模块

11 script模块:执行脚本

[root@centos7 ansible]# cat /tmp/test.sh
#!/bin/sh
#echo "$(hostname) ansible is good." >/tmp/ansible.txt[root@centos7 ansible]# ll /tmp/test.sh   不给执行权限,远程主机执行 了
-rw-r--r-- 1 root root 67 Sep 18 12:22 /tmp/test.sh
[root@centos7 ansible]# ansible all -m script -a '/tmp/test.sh'

12  setup 获取远程主机的facts,变量,属于查看类别

ansible all -m setup

13 playbooks,综合以上所有的模块

核心元素有:tasks:任务
variables:变量
templates:模板
handlers:处理器
roles:角色其中一个特点:中途发送错误,所有已经执行的任务都将回滚,需要更正之后重新执行一次

下面是一个文件例子:hosts,tasks这些冒号之前的文字变成蓝色的就是写正确了,否则就要检查

- hosts: allremote_user: roottasks:- name: add a group    // 加上 - 就是一个单独的模块以及处理命令:group: gid=1008 name=testgroup system=no- name: excute a commandcommand: /bin/date运行结果
[root@centos7 ~]# ansible-playbook test.yamlPLAY [all] ***********************************************************************************TASK [Gathering Facts] ***********************************************************************
ok: [192.168.31.17]
ok: [192.168.31.5]TASK [add a group] ***************************************************************************
changed: [192.168.31.5]
changed: [192.168.31.17]TASK [excute a command] **********************************************************************
changed: [192.168.31.17]
changed: [192.168.31.5]PLAY RECAP ***********************************************************************************
192.168.31.17              : ok=3    changed=2    unreachable=0    failed=0
192.168.31.5               : ok=3    changed=2    unreachable=0    failed=0   

忽略错误的情况
比如执行mkdir 命令,再建用户的话将报错

方法一 /bin/true

tasks:- name:  run this command and ignore the resultcommand:  /usr/bin/somecommand || /bin/true

方法二: ignore_errors

tasks:- name:  run this command and ignore the resultcommand:  /usr/bin/somecommand ignore_errors: True

handler: 用于当关注的资源发生变化时采取一定的操作

   - hosts: allremote_user: roottasks:- name:  ensuse apache laster versionyum:  state=latest name=httpd- name:  apache configure filecopy: src=/root/httpd.conf  dest=/etc/httpd/conf/httpd.conf  force=yesnotify:  #激活handlers中的name相同名称的服务- restart apachehandlers:- name:  restart apacheservice: name=apache state=restarted

posted on 2018-09-18 15:57 dawn-liu 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/mmyy-blog/p/9669435.html

自动化运维工具----ansible相关推荐

  1. 自动化运维工具ansible(安装与模块介绍)

    自动化运维工具ansible(安装与模块介绍) 一.ansible运维工具概述 (一).ansible的特点 (二).ansible的原理 (三)ansible的优点 二.安装ansible 三.an ...

  2. 自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客

    自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客 自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客 自动化运维工具Ansib ...

  3. 自动化运维工具Ansible实战---常用模块

    Ansible默认提供了很多模块来供我们使用.在Linux中,我们可以通过 ansible-doc -l 命令查看到当前Ansible支持哪些模块,通过 ansible-doc -s [模块名] 又可 ...

  4. 自动化运维工具ansible的安装管理以及模块介绍

    自动化运维工具ansible的安装管理以及模块介绍 目录 自动化运维工具ansible的安装管理以及模块介绍 一.ansible概述 1.几种常用运维工具比较 2.Ansible简介 3.Ansibl ...

  5. 自动化运维工具-Ansible的Playbook的使用

    Playbook的使用 前言 一.Playbook是什么? 二.playbook使用场景 三.Playbook格式说明 四.Play book变量的使用 1 在主机列表定义变量 2 在playbook ...

  6. 自动化运维工具-Ansible实战指南

    Ansible实战 前言 一.Ansible简介 1.ansible是什么? 2.ansible特点 3.ansible架构 主要模块 工作流程 命令执行过程 二.Ansible 配置 1 安装ans ...

  7. 自动化运维工具——Ansible(三)——分组管理

    自动化运维工具--Ansible(三)--分组管理 1. 通过ip地址分组 1.1 写法一 1.2 写法二 2. 通过主机名分组 2.1 写法一 2.2 写法二 3. 子组 1. 通过ip地址分组 1 ...

  8. 自动化运维工具Ansible

    ansible简介: ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批 ...

  9. 自动化运维工具Ansible详细部署

    一.基础介绍 ================================================================================= 1.简介 ansibl ...

最新文章

  1. 9位AI教授总结2017年:技术变得平民化,但商业竞争在不断升级
  2. 搭建WSS 开发测试环境
  3. 软件测试周记录之jmeter
  4. 书------编程(理论方面)
  5. phpstudy mysql优化_MySQL_MySQL优化之对RAND()的优化方法,众所周知,在MySQL中,如果直 - phpStudy...
  6. svga文件如何查看_电脑隐藏文件?如何查看隐藏文件 方法简单易学
  7. [转载] Java中this和super关键字分别是什么意思
  8. pdf转换成word教程
  9. 安腾机器IA64 全自动网络安装Linux - elilo+kickstart
  10. 鸿蒙策略炒股软件安全么,鸿蒙即将全量开源 引爆国产软件板块!
  11. 拾叶集 文/江湖一剑客
  12. 我的世界只支持java8_我的世界minecraft 1.8以上版本forge安装支持哪一种java?7还是8?...
  13. “采菊东篱下,悠然见南山”----南山路上品太古 总结
  14. 交换游戏(状态压缩、记忆化搜索)
  15. C#命名空间 System.IO思维导图
  16. 如何用Python制作一个简单的二维码生成器
  17. java udp心跳机制_心跳包机制整理汇总
  18. uniswapV3 polygon
  19. java获取文件大小_Java实现获取文件大小的几种方法
  20. Office2Pdf工具开发

热门文章

  1. 嘿嘿 刚刚进来 记录下
  2. 2012 ARM嵌入式开发应用研讨会杂谈
  3. 国内使用dropbox_通过创建费用管理器来学习使用Dropbox API
  4. javascript调试_如何提高JavaScript调试技能
  5. (C++)202012-2 期末预测之最佳阈值 满分
  6. java培训:什么是抽象类?怎么定义?
  7. leetcode--字符串转换为整数--python
  8. Spring MVC常用注解说明
  9. VBA中级班课时3小结
  10. java中图片文件的判断