Ansible介绍与安装使用

摘要:
Ansible介绍与安装目录Ansible介绍与安装Ansible的定义Ansible的基础架构Ansible的程序目录结构Anisible特性注意事项安装Ansible自定义清单Anisble实现管理方式Ansible常用模块ping模块user模块command/raw/shell模块script模块Ansible的定义ansible是一种自动化运维工具,基于paramiko开发的,并且基于模块化工作,Ansible是一种集成IT系统的配置管理、应用部署、执行特定任务的开源平台,它是基于python语言,由Paramiko和PyYAML两个关键模块构建。
Ansible 介绍与安装
目录

Ansible的定义

ansible是一种自动化运维工具,基于paramiko开发的,并且基于模块化工作,Ansible是一种集成IT系统的配置管理、应用部署、执行特定任务的开源平台,它是基于python语言,由Paramiko和PyYAML两个关键模块构建。集合了众多运维工具的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的.

Ansible的基础架构

ansible系统由控制端和被控端组成,控制主机不支持windows平台

Ansible介绍与安装使用第1张

名字含义
AnsibleAnsible核心程序
HostInventory记录由Ansible管理的主机信息,包括端口、密码、ip等
Playbooks“剧本”YAML格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能
CoreModules核心模块,主要操作是通过调用核心模块来完成管理任务。
CustomModules自定义模块,完成核心模块无法完成的功能,支持多种语言。
ConnectionPlugins连接插件,Ansible和Host通信使用

Ansible的程序目录结构

  • 配置文件:/etc/ansible/
  • 执行文件目录:/usr/bin/
  • lib依赖库:/usr/lib/python3.6/site-packages/ansible/
  • help文件:/usr/lib/python3.6/site-packages/ansible/

Anisible特性

  1. 模块化
  2. 有Paramkio(基于SSH),PyYAML(语言,实现playbook),jinja2(模块语言)三个关键模块
  3. 支持自定义模块
  4. 幂等性:执行一次和执行多次的情况一样,如果发现已经执行过,不会执行第二次。
  5. 支持playbook编排任务
  6. 无需代理不依赖PKI(无需SSL)
  7. 安全,基于OpenSSH
  8. 部署简单,只需要python,SSH,agentless

注意事项

  1. 执行ansible的主机成语主控端,中控,master或者堡垒机
  2. 主控端python版本需要2.6或者3.5以上
  3. 被控端如果python版本小于2.4需要安装python-simplejson
  4. 被控端如果开启seLinux,需要安装libselinux-python
  5. windows不能作为主控端。

安装Ansible


[root@localhost ~]# yum install -y ansible

总下载量:22 M
安装大小:124 M
Downloading packages:
(1/22): PyYAML-3.10-11.el7.x86_64.rpm                           | 153 kB  00:00:00 
(2/22): libyaml-0.1.4-11.el7_0.x86_64.rpm                       |  55 kB  00:00:00 
(3/22): python-backports-1.0-8.el7.x86_64.rpm                   | 5.8 kB  00:00:00 
(4/22): python-backports-ssl_match_hostname-3.5.0.1-1.el7.noarc |  13 kB  00:00:00 
(5/22): python-cffi-1.6.0-5.el7.x86_64.rpm                      | 218 kB  00:00:00
......
完毕!

自定义清单(配置组内成员)

需要编辑ansible.conf中的inventory,到新的文件中。此后只修改新增的文件即可。

[root@localhost ansible]# cp hosts inventory

[root@localhost ansible]# vim inventory   此后只需编辑inventory

[test]
192.168.190.133 ansible_password=123456
192.168.190.134 ansible_password=123456
192.168.190.135 ansible_password=123456

ansible ip/组名 --list-hosts 查看组内或者某个对象的信息

[root@localhost ansible]# ansible test --list-hosts      查看test组内的主机信息
  hosts (3):
    192.168.190.133
    192.168.190.134
    192.168.190.135

Anisble实现管理方式

  1. Ad-Hoc:即ansible命令。临时使用场景。

    格式:ansible 主机集合 -m 模块名 -a "参数"

  2. Asible-playbook:主要用于长期规划好的,大型项目的场景,需要有前提的规划。

Ansible常用模块

ping 模块

Ansible最基础的模块是ping模块,主要用于判断远程客户端是否在线,用于ping本身服务器

Ansible介绍与安装使用第2张

密码认证:

  • 方法1:-k输入密码
  • 方法2:inventory中写入密码
[root@localhost ansible]# ansible 192.168.190.135 -m ping -k   方法1:-k 然后输入登录密码即可。
SSH password: 
192.168.190.135 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}

[root@localhost ansible]# vim /etc/ansible/inventory    
[test]
192.168.190.133 ansible_password=123456    方法二:主机清单中添加password。也可指定用户名
192.168.190.134 ansible_password=123456
192.168.190.135


[root@localhost ansible]# ansible all -m ping   3台被控机都已ping通。
192.168.190.135 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}
192.168.190.134 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "ping": "pong"
}
192.168.190.133 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "ping": "pong"
}

user 模块

实现Linux系统账户管理

Ansible介绍与安装使用第3张

ansible 192.168.190.133 -m user -a 'name=tom uid=5000 state=present/absent'

present:表示存在状态(默认状态)

absent: 表示缺席状态

[root@localhost ansible]# ansible 192.168.190.133 -m user -a 'name=sawyer'  133主机上创建sawyer用户
192.168.190.133 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "append": false,
    "changed": false,
    "comment": "",
    "group": 1000,
    "home": "/home/sawyer",
    "move_home": false,
    "name": "sawyer",
    "shell": "/bin/bash",
    "state": "present",
    "uid": 1000
}

[root@localhost ansible]# ansible 192.168.190.133 -m user -a 'name=sawyer state=absent'   状态为absent,表明把sawyer这个用户从133的主机上删除掉。
192.168.190.133 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
    "force": false,
    "name": "sawyer",
    "remove": false,
    "state": "absent"
}

command/raw/shell 模块

注:Anisble默认模块为command

在被控端执行任意命令

模块名说明
command无法使用环境变量等
raw无需被控主机安装python,用于被主机设备(网络设备等)
shell可使用管道符,重定向等
[root@localhost ansible]# ansible 192.168.190.133 -a 'ls'   command查看
192.168.190.133 | CHANGED | rc=0 >>
anaconda-ks.cfg

[root@localhost ansible]# ansible 192.168.190.133 -m shell -a 'echo "你好" > file1.txt'    引用shell模块新建file1文件
192.168.190.133 | CHANGED | rc=0 >>

[root@localhost ansible]# ansible 192.168.190.133 -m shell -a 'ls'  查看,发现已经新增
192.168.190.133 | CHANGED | rc=0 >>
anaconda-ks.cfg
file1.txt

script 模块

会把-a后面的脚本拷贝到被管理端主机,然后执行这个脚本

Ansible介绍与安装使用第4张

[root@localhost /]# mkdir scripts
[root@localhost /]# ls /scripts/
test.sh
[root@localhost /]# chmod u+x scripts/test.sh   给脚本添加执行权限。

[root@localhost scripts]# vim /scripts/test.sh   编写脚本
#!/bin/bash

echo "hello world"



成功在133主机上执行test.sh脚本
[root@localhost scripts]# ansible 192.168.190.133 -m script -a '/scripts/test.sh' 
192.168.190.133 | CHANGED => {
    "changed": true,
    "rc": 0,
    "stderr": "Shared connection to 192.168.190.133 closed.
",
    "stderr_lines": [
        "Shared connection to 192.168.190.133 closed."
    ],
    "stdout": "hello world
",
    "stdout_lines": [
        "hello world"
    ]
}

免责声明:文章转载自《Ansible介绍与安装使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MySQL--->数据库的简介和安装Apache Tomcat 7 安装与配置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Python -- 限流 throttle

前言一个业务型的服务,被open接口后,遭遇并发扫数据,于是要做限流操作。一直固执的认为,业务API和OpenAPI要分开处理,或许因为起初接入其他企业ERP系统都是走较为规范的OpenAPI,始终对于这种开发系统业务API的做法感觉不好。 窗口限流需求是要在Django的一个工程里做限流,倘若是rest_framework的View也好办,直接就提供了限...

基于Python的Web应用开发实战——3 Web表单

第2章中介绍的 请求对象 包含客户端发出的所有请求信息。 其中, request.form 能获取 POST请求 中提交的表单数据。 尽管Flask的请求对象提供的信息足够用于处理Web表单,但有些任务很单调,而且要重复操作。 比如,生成表单的HTML代码和验证提交的表单数据。 Flask-WTF(https://flask-wtf.readthedocs...

Django安装和web框架原理

Django安装和web框架原理 在PyCharm中安装 在cmd中输入 django-admin startproject 项目名 如果报错 不是内部或外部命令,也不是可运行的程序 需要添加环境变量 运行Django项目 切换到项目名目录下 python manage.py runserver 或者 python manage.py...

python设计模式之猴子补丁模式

1、所有书中都没有把猴子补丁作为一种设计模式来看待。因为设计模式的模式的命名是根据java中提炼出来的,语言方式决定了java绝对不会有也不需要有这种操作,不存在的。那自然设计模式不会包括猴子补丁模式。 2、根据百度百科介绍,设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开...

python实现RSA加密解密方法

python3.5 安装pip 1 安装rsa 2 python -m pip install rsa 我们可以生成RSA公钥和密钥,也可以load一个.pem文件进来 1 #-*- coding: utf-8 -*- 2 importrsa 3 4 #先生成一对密钥,然后保存.pem格式文件,当然也可以直接使用 5 (pubkey, privkey)...

Vagrant系列(二)Vagrant的配置文件Vagrantfile详解

一、简介 在我们的工作目录下有一个Vagrantfile文件,里面包含有大量的配置信息,通过它可以定义虚拟机的各种配置,如网络、内存、主机名等,主要包括三个方面的配置,虚拟机的配置、SSH配置、Vagrant的一些基础配置。Vagrant是使用Ruby开发的,所以它的配置语法也是Ruby的,每个项目都需要有一个Vagrantfile,在执行vagrant...