1.Ansible介绍

1)Ansible:Ansible的核心程序

2)Host Inventory:(默认路径:/etc/ansible/hosts)记录了每一个由Ansible管理的主机信息,信息包括ssh端口,root帐号密码,ip地址等等。可以通过file来加载,可以通过CMDB加载

3)Playbooks:YAML格式文件,多个任务定义在一个文件中,使用时可以统一调用,“剧本”用来定义那些主机需要调用那些模块来完成的功能.

4)Core Modules:Ansible执行任何管理任务都不是由Ansible自己完成,而是由核心模块完成;Ansible管理主机之前,先调用core Modules中的模块,然后指明管理Host Lnventory中的主机,就可以完成管理主机。

5)Custom Modules:自定义模块,完成Ansible核心模块无法完成的功能,此模块支持任何语言编写。

6)Connection Plugins:连接插件,Ansible和Host通信使用

2.ansible三种调用方式

1)hoc:命令行

2)playbooks:剧本/脚本

3)roles:角色

3.ansible配置客户端

1)安装:

yum install epel-release

yum install anisble

2)配置客户端

(1)server:ssh-keygen

scp id_rsa.pub root@192.168.254.25:/root/.ssh/authorized_keys

(2)vim /etc/ansible/hosts

ansible_ssh_user=root ansible_ssh_port=22 ansible_ssh_pass=root

4.ansible默认并发数:5

ansible -f 修改

5.ansible常用命令

ansible-doc -l #查看支持的模块

ansible-doc -s MODEL_NAME #查看模块用法

ansible命令应用基础

ansible all -m ping #查看client端是否正常ping通

ansible webserver -m setup #查看客户端信息

ansible webserver -m copy -a 'src=/root/git_test/code.txt dest=/root/test' #copy文件到cient端

ansible webserver -m user -a "name=test state=present" #创建test用户

ansible webserver -m user -a "name=test state=absent" #删除test用户

ansible webserver -m yum -a ‘name=epel-relese state=latest‘ #yum安装

ansible webserver -m service -a ‘name=httpd state=stopped enabled=no‘ #停止httpd服务

ansible webserver -m script -a ‘/tmp/test.sh‘ #运行脚本

ansible webserver -m command 'date' #查看时间

6.连接报错解决

使用ansible连接主机时出现Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this.  Please add this host's fingerprint to your known_hosts file to manage this host.报错则把/etc/ansible/ansible.cfg配置文件中host_key_checking = False行注释打开

7.playbooks

1)

如果用模块形式一般有幂等性,如果用shell或者command没有幂等性

  playbooks相当于是shell脚本,可以把要执行的任务写到文件当中,一次执行,方便调用

  tasks:一个task相当于是一个play

  varibles: 变量,一定定义,多处调用

  template:模板,可以区分不同主机的特点

  handlers:触发器,依赖于前一个任务,前一个任务如果执行改变,那么就会触发handlers

2)定义playbook任务

  1. - hosts: testhosts -与关键字之间必须有空格
  2.  
  3. remote_user: root hosts对齐
  4.  
  5. vars: 定义变量
  6.  
  7. - file: httpd.conf
  8.  
  9. tasks: 定义任务
  10.  
  11. - name: copy httpd.conf 任务名
  12.  
  13. copy: src=/root/{{ file }} dest=/etc/httpd/conf/{{ file }} 调用copy模块
  14.  
  15. - name: restart httpd 定义多个任务
  16.  
  17. service: name=httpd state=restarted

3)定义变量

在yaml文件当中传入模板变量

{{变量名}}

第一种:

vars:

- file: httpd.conf

第二种:

vim /etc/ansible/hosts

[testhosts:vars]

file=httpd.conf

packages=tree

第三种

执行playbook文件时候给与变量 --extra-vars

ansible-playbook test.yaml --extra-vars "touch_file=test.txt"

4)注册变量:

register注册变量:把date命令输出的结果赋予给date_output

  1. - hosts: 192.168.254.10
  2.  
  3. remote_user: root
  4.  
  5. tasks:
  6.  
  7. - name: get date
  8.  
  9. command: date
  10.  
  11. register: date_output
  12.  
  13. - name: echo date_output
  14.  
  15. shell: "echo {{date_output.stdout}}>/tmp/a.txt"

5)when语句

when条件语句:可以根据setup显示出客户端信息为依据来判断

  1. - hosts: 192.168.254.12
  2.  
  3. remote_user: root
  4.  
  5. tasks:
  6.  
  7. - name: echo date_output
  8.  
  9. shell: "touch /tmp/a.txt"
  10.  
  11. when: ansible_distribution=='CentOS' and ansible_distribution_major_version=='8'

6)异常处理

ignore_errors:如果任务出错,直接跳过,不会影响其他任务

  1. - hosts: 192.168.254.12
  2.  
  3. remote_user: root
  4.  
  5. tasks:
  6.  
  7. - name: add several user
  8.  
  9. command: touch1 a.txt
  10.  
  11. ignore_errors: yes

7)循环语句:

第一种:

{{ item }}:循环创建

  1. - hosts: 192.168.254.12
  2.  
  3. remote_user: root
  4.  
  5. tasks:
  6.  
  7. - name: add many users
  8.  
  9. user: name={{ item }} state=present
  10.  
  11. with_items:
  12.  
  13. - user1
  14.  
  15. - user2
  16.  
  17. - user3
  18.  
  19. - user4

第二种:

  1. - hosts: 192.168.254.12
  2.  
  3. remote_user: root
  4.  
  5. tasks:
  6.  
  7. - name: add several user
  8.  
  9. user: name={{item.name}} state=present groups={{item.groups}}
  10.  
  11. with_items:
  12.  
  13. - { name: 'testuser1', groups: 'wheel'}
  14.  
  15. - { name: 'testuser2', groups: 'root'}

8)触发器:

handlers:如果执行的任务被改变那么会触发handlers的任务

  1. - hosts: testhosts
  2.  
  3. remote_user: root
  4.  
  5. tasks:
  6.  
  7. - name: copy httpd.conf
  8.  
  9. copy: src=/root/httpd.conf dest=/etc/httpd/conf/httpd.conf
  10.  
  11. notify:
  12.  
  13. - restarted httpd service
  14.  
  15. handlers:
  16.  
  17. - name: restarted httpd service
  18.  
  19. service: name=httpd state=restarted

9)模板拷贝:

template,用来区分不同客户端上的特性

  1. - hosts: testhosts
  2.  
  3. remote_user: root
  4.  
  5. tasks:
  6.  
  7. - name: copy httpd.conf
  8.  
  9. template: src=/root/httpd.conf dest=/etc/httpd/conf/httpd.conf copy改为template
  10.  
  11. notify:
  12.  
  13. - restarted httpd service
  14.  
  15. handlers:
  16.  
  17. - name: restarted httpd service
  18.  
  19. service: name=httpd state=restarted

将要修改的文件内的区域改为变量,如把Listen 80 改为Listen {{ port }}

在组文件中添加变量的值

  1. [testhosts]
  2.  
  3. 192.168.52.234·······port=1111
  4.  
  5. 192.168.52.235·······port=2222

8.roles:角色

1)创建目录

  1. [root@localhost ~]# tree playbooks/
  2.  
  3. playbooks/ 根据需要命名
  4.  
  5. ├── roles
  6.  
  7. ├── dbservers 根据需要命名
  8.  
  9. ├── files 存放要复制的文件
  10.  
  11. └── httpd.conf
  12.  
  13. ├── handlers 存放触发器任务文件
  14.  
  15. └── main.yaml
  16.  
  17. ├── tasks 存放任务文件
  18.  
  19. └── main.yaml
  20.  
  21. ├── templates 存放模板文件
  22.  
  23. └── httpd.conf
  24.  
  25. └── vars 存放变量定义文件
  26.  
  27. └── main.yaml
  28.  
  29. └── webservers
  30.  
  31. ├── files
  32.  
  33. ├── handlers
  34.  
  35. ├── tasks
  36.  
  37. ├── templates
  38.  
  39. └── vars
  40.  
  41. └── site.yaml 主调用文件

编辑主调用文件:

  1. vim playbooks/site.yaml
  2.  
  3. - hosts: webservers
  4.  
  5. remote_user: root
  6.  
  7. roles:
  8.  
  9. - webservers
  10.  
  11. - dbservers

2)按照playbooks语句进行编辑

ansible自动化运维管理工具的更多相关文章

  1. Ansible 自动化运维管理工具

    Ansible 自动化运维管理工具 1.Ansible概述 2.Ansible部署 3.Ansible模块 1.Ansible概述: Ansible是一个基于Python开发的配置管理和应用部署工具, ...

  2. Linux运维之Ansible自动化运维管理工具

    Ansible简介:Ansible是一个简单高效的自动化运维管理工具,用Python开发,能大批量管理N多台机器,可以并发的在多台机器上部署应用.安装软件.执行命令.配置和编排任务.后面会提到批量安装 ...

  3. Ansible-Tower自动化运维管理环境 - 安装破解记录

    公司中实现运维自动化的架构中主要用到ansible,ansible脚本在部署服务器指令行中显得不太直观.Ansible-Tower(之前叫做awx)是将ansible的指令界面化,简明直观,简单易用. ...

  4. opsmanage 自动化运维管理平台

    关闭防火墙.selinux 更换阿里云 yum源 依赖环境 yum install -y epel-releaseyum install vim net-tools nmon htop rsync t ...

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

    概述本文描述自动化运维工具 Ansible 的安装及基础使用方法,包含: Centos 下的安装主机配置Ad-Hoc command(命令行执行)Playbook (任务剧本)Ansible 和 Sa ...

  6. Ansible自动化运维工具-上

    [Ansible特点] 1)Ansible与saltstack均是基于Python语言开发的 2)安装使用简单,基于不同插件和模块实现各种软件,平台,版本的管理以及支持虚拟容器多层级的部署 3)不需要 ...

  7. Ansible 自动化运维工具

    Ansible 自动化运维工具 Ansible是什么? Ansible是一个"配置管理工具"也是一个"自动化运维工具" Ansible 作用: Ansible是 ...

  8. Ansible自动化运维工具的使用

                                 Ansible自动化运维工具的使用       host lnventory 管理主机 ip  root账号密码 ssh端口 core mod ...

  9. Ansible自动化运维工具及其常用模块

    Ansible自动化运维工具及其常用模块 目录 Ansible自动化运维工具及其常用模块 一.Ansible简介 1. Ansible概述 2. Ansible作用 3. Ansible的工作模块 4 ...

随机推荐

  1. BZOJ2306 [Ctsc2011]幸福路径[倍增]

    这个有环的情况非常的讨厌,一开始想通过数学推等比数列的和,但是发现比较繁就不做了. 然后挖掘这题性质. 数据比较小,但是体力可以很接近1(恼怒),也就是说可能可以跳很多很多步.算了一下,大概跳了2e7 ...

  2. hiho #1066 : 无间道之并查集

    #1066 : 无间道之并查集 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 这天天气晴朗.阳光明媚.鸟语花香,空气中弥漫着春天的气息……额,说远了,总之,小Hi和小H ...

  3. django 之视图层及模板层 04

    目录 视图层 render方法是Template和Contex两个对象的组合使用 JsonResponse对象 CBV及源码分析 CBV 加装饰器的方式 模板层 模板语法传值 模板语法 变量 过滤器( ...

  4. entity framework delete table Error 11007:

    udate model from database 数据库表删除时,会出现“Error 11007:”的异常,此时在.edmx文件中找到此表的实体发现还存在,删除它就没有这个错误 了.

  5. __stdcall、__cdcel、__fastcall 调用

    常用的调用约定有stdcall,cdecl,fastcall,thiscall,naked call等,以下将 __stdcall.__cdecl和__fastcall三种函数调用协议加以比较,函数调 ...

  6. sublime text 编辑器的操作

    我一直在用的代码编辑器是sublime text,然后总结了一些相关的操作方法. 一 环境操作 1.放大显示比例:Ctrl+ 2.缩小显示比例:Ctrl- 3.分屏:Alt+ Shift +数字    ...

  7. #4 div1E Parentheses 括号匹配

    E - Parentheses Time Limit:2000MS     Memory Limit:131072KB     64bit IO Format:%lld & %llu Subm ...

  8. Makefile样例

    Makefile1 src = $(wildcard ./*cpp) obj = $(patsubst %.cpp, %.o,$(src)) target = test $(target) : $(o ...

  9. 局域网 ARP 欺骗原理详解

    局域网 ARP 欺骗原理详解 ARP 欺骗是一种以 ARP 地址解析协议为基础的一种网络攻击方式, 那么什么是 ARP 地址解析协议: 首先我们要知道, 一台电脑主机要把以太网数据帧发送到同一局域网的 ...

  10. SRM331-CarolsSinging(暴力,位运算)

    Problem Statement When the Christmas dinner is over, it's time to sing carols. Unfortunately, not al ...