欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

ansible简介

程序员文章站 2022-05-03 22:00:44
Ansible项目 一、Ansible简介: ansible是一种新流行的自动化运维工具,基于python2-paramiko模块开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令功能。 ansible是 ......

ansible项目

一、ansible简介:

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

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

(1)连接插件connection plugins:负责和被监控端事先通信;

(2)host inventory:操作主机清单;

(3)核心模块、command模块、自定义模块;

(4)借助与插件完成记录日志邮件等功能;

(5)playbook:剧本执行多个任务时,非必须可以让节点一次性运行多个任务。

 

 

二、ansible特性:

(1)no agents: 不需要在被管理主机上安装任何客户端软件。

(2)no server: 无服务器端的概念,使用时直接运行命令即可。

(3)modules in any languages: 基于模块工作,可使用任意语言开发模块。

(4)yaml, not code: 使用yaml语言定制剧本playbook。

(5)ssh by default: 基于ssh工作。

(6)strong multi-tier solution: 可实现多级指挥。

 

三、ansible优点:

(1)轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可。

(2)批量任务执可以写成脚本,而且不用分发到远程就可以执行。

(3)使用python编写,维护更简单,ruby语法过于复杂。

(4)支持sudo

 

四、安装ansible:

1)管理节点上安装ansible

(redhat/centos linux上,ansible目前放在epel源中。fedora默认源中包含ansible,自己安装即可)

# yum install epel-release

# yum install ansible -y

# ssh-keygen

# ssh-copy-id remoteuser@remotehost

2)被管理的远程主机

不需要安装特殊的包,只需要配置并启动ssh服务且python版本在2.4以上即可。redhat一般安装方式都是默认安装的。  

 

五、ansible配置文件简介:

(1)主配置文件:/etc/ansible/ansible.cfg

(2)默认主机清单文件:/etc/ansible/hosts

 

ansible的配置文件说明:

配置文件种类

说明

所在位置

默认配置文件

 ansible软件的的默认配置文件,对所有使用ansible的用户生效

/etc/ansible/ansible.cfg

用户配置文件

使用普通用户的执行特定的运维playbook,只要使用该用户登录ansible运维主机,不管在任何文件夹下该配置文件将会覆盖默认配置文件中的内容。

~/amsible.cfg

~/.ansible.cfg

运维项目配置文件

把一类运维playbook放在一个文件夹中,仅仅在当前的运维项目中生效的配置文件。

/dir/ansible.cfg

 

● 使用ansible  --version查看当前生效的ansible.cfg的路径。

● 当三种文件的发生冲突的时候,优先级:运维项目配置文件 > 用户配置文件 > 默认配置文件

/dir/ansible.cfg > ~/.ansible.cfg > ~/amsible.cfg > /etc/ansible/ansible.cfg

 

可以在ansible.cfg指定hosts文件在哪里

 

 

六、ansible默认主机清单文件inventory为/etc/ansible/hosts

什么是inventory:

● static lines of servers

● ranges

● other custom things

● dynamic lists of servers: aws,azure,gcp,etc.

语法结构:

● “#”开始表示注释,空格行被忽略

●  使用[ ]设置远程主机分组,[groupname]内是组名。

●  主机列表可以使用主机名或ip地址。

●  一个主机名或ip地址可以在多个分组中。

●  使用[start:end]表示连续的主机。

● 分组支持嵌套,一个组可以包含其它组,新组名中以”:children“后缀。

[group1]

host1.example.com

host2.example.com

[group2]

host3.example.com

host4.example.com

[newgroup:children]

group1

group2

1)标准的主机和分组清单例子:

mail.example.com

[webservers]

foo.example.com

bar.example.com

[dbservers]

one.example.com

two.example.com

three.example.com

 

(2)非标准端口下主机清单

badwolf.example.com:5309

 

3)连续大量主机清单"[start:end]"

[webservers]

www[01:50].example.com

[databases]

db-[a:f].example.com

192.168.[4:7].[0:255]        //在192.168.4.0/22网段下的所有主机,即192.168.4.0-192.168.7.255

 

4)主机设定别名的清单

jumper ansible_port=5555 ansible_host=192.0.2.50

 

5)组中包含其它组(组嵌套)

[olympia]

washington1.example.com

washington2.example.com

[salem]

oregon01.example.com

oregon02.example.com

[nwcapitols:children]

olympia

salem

 

6)设定连接参数

[targets]

localhost                ansible_connection=local

other1.example.com     ansible_connection=ssh        ansible_user=mpdehaan

other2.example.com     ansible_connection=ssh        ansible_user=mdehaan

 

 

主机清单文件常用连接参数

连接参数

表示含义

ansible_connection

ssh的连接方式。可以指定为smart、ssh、local、paramiko

ansible_host

ansible连接的主机地址,如果在主机清单中起了一个不同的别名,那么需要用这个参数指定主机ip或主机名。

ansible_port

ssh端口号,默认为22。

ansible_user

ssh连接时使用的默认用户名。

ansible_ssh_pass

ssh连接时使用的密码。不过不建议用本参数存储明文的密码。

ansible_ssh_private_key_file

指定使用ssh-keygen生成的私钥文件所存放的位置。

ansible_ssh_common_args

通过配置此参数来指定sftp、scp和ssh默认的额外参数。

更多连接参数http://docs.ansible.com/ansible/latest/intro_inventory.html#list-of-behavioral-inventory-parameters