ansible安装与核心组件详解

时间:2022-06-24 16:03:04

第1章 安装anisble

1.1 安装epel源

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

1.2 Yum安装ansible

yum install ansible -y

1.3 验证安装结果

[root@qtbackup ~]# ansible --version
ansible 2.3.1.0
config file = /etc/ansible/ansible.cfg
configured module search path = Default w/o overrides
python version = 2.6.6 (r266:84292, Aug 18 2016, 15:13:37) [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)]
[root@qtbackup ~]#

 

第2章 Ansible核心组件详解

2.1 Ansible核心组件说明:

l  Ansible:Ansible的核心程序

l  Host Lnventory:记录了每一个由Ansible管理的主机信息,信息包括ssh端口,root帐号密码,ip地址等等。可以通过file来加载,可以通过CMDB加载

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

l  Core Modules:Ansible执行任何管理任务都不是由Ansible自己完成,而是由核心模块完成;

l  Ansible管理主机之前,先调用core Modules中的模块,然后指明管理Host Lnventory中的主机,就可以完成管理主机。

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

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

 

2.2 .ansible执行过程,其中暖色调的代表已经模块化

ansible安装与核心组件详解

2.3 Ansible命令集合

/usr/bin/ansible: # Ansibe AD-Hoc 临时命令执行工具,常用于临时命令的执行
/usr/bin/ansible-doc: # Ansible 模块功能查看工具
/usr/bin/ansible-galaxy: # 下载/上传优秀代码或Roles模块的官网平台,基于网络的
/usr/bin/ansible-playbook: # Ansible 定制自动化的任务集编排工具
/usr/bin/ansible-pull: # Ansible远程执行命令的工具(使用较少,海量机器时使用,对运维的架构能力要求较高)
/usr/bin/ansible-vault: # Ansible 文件加密工具
/usr/bin/ansible-console: # Ansible基于Linux Consoble界面可与用户交互的命令执行工具
/usr/share/ansible_plugins:Ansible高级自定义插件目录(需要python基础)
/etc/ansible/ansible.cfg:配置文件
/etc/ansible/hosts:主机清单

2.4 Ansible配置文件

绝大多数保持默认就行

1)[defaults] 
#inventory
= /etc/ansible/hosts # 主机列表配置文件
#library
= /usr/share/my_modules/ # 库文件存放目录
#remote_tmp
= $HOME/.ansible/tmp # 生成的临时py命令文件存放在远程主机的目录
#local_tmp
= $HOME/.ansible/tmp # 本机的临时命令执行目录
#forks
= 5 # 默认并发数
#poll_interval
= 15 # 默认的线程池
#sudo_user
= root # 默认sudo 用户
#ask_sudo_pass
= True
#ask_pass
= True
#transport
= smart
#remote_port
= 22
#module_lang
= C
#module_set_locale
= False
host_key_checking
= False ### 检查对应服务器的host_key
2)[privilege_escalation]
3)[paramiko_connection]
4)[ssh_connection]
5)[accelerate]
6)[selinux]
7)[colors]

2.5 Ansible命令使用说明

#调用ping模块检测node3主机是否存活(node2,3,4能基于主机名通信,且已做过免密钥通信) [root@node2 ~/.ssh]# ansible node3 -m ping node3 
| success >> {
"changed": false,
"ping": "pong" }
[root@node2
~/.ssh]#





[root@node2
~/.ssh]# ansible -h
Usage: ansible
<host-pattern> [options]

Options:
-a MODULE_ARGS, --args=MODULE_ARGS #模块的参数,如果执行默认COMMAND的模块,即是命令参数,如:“date”,"pwd"等等
module arguments #模块参数
--ask-become-pass ask for privilege escalation password # Ansible su切换用户的时候使用该参数输入密码
-k, --ask-pass ask for SSH password #登录密码,提示输入SSH密码而不是假设基于密钥的验证
--ask-su-pass ask for su password #su切换密码
-K, --ask-sudo-pass ask for sudo password #提示密码使用sudo,sudo表示提权操作
--ask-vault-pass ask for vault password # ansible-valut 加密文件
-B SECONDS, --background=SECONDS #后台运行超时时间
run asynchronously, failing after X seconds
(
default=N/A)
-C, --check don't make any changes; instead, try to predict some #只是测试一下会改变什么内容,不会真正去执行;相反,试图预测一些可能发生的变化
of the changes that may occur
-c CONNECTION, --connection=CONNECTION 连接类型使用。可能的选项是paramiko(SSH),SSH和地方。当地主要是用于crontab或启动。
connection type to use (
default=smart)
-e EXTRA_VARS, --extra-vars=EXTRA_VARS # 调用外部变量
-f FORKS, --forks=FORKS # Ansible一次命令执行并发的线程数,默认是5
specify number of parallel processes to use
(
default=5)
-h, --help show this help message and exit #打开帮助文档API
-i INVENTORY, --inventory-file=INVENTORY #指定库存主机文件的路径,默认为/etc/ansible/hosts
specify inventory host file
(
default=/etc/ansible/hosts)
-l SUBSET, --limit=SUBSET #进一步限制所选主机/组模式 --limit=192.168.91.135 只对这个ip执行
further limit selected hosts to an additional pattern
--list-hosts outputs a list of matching hosts; does not execute
anything
else
-m MODULE_NAME, --module-name=MODULE_NAME #执行模块的名字,默认使用 command 模块,所以如果是只执行单一命令可以不用 -m参数
module name to execute (
default=command)
-M MODULE_PATH, --module-path=MODULE_PATH #要执行的模块的路径,默认为/usr/share/ansible/
specify path(s) to module library
(
default=/usr/share/ansible/)
-o, --one-line condense output #压缩输出,摘要输出.尝试一切都在一行上输出。
-P POLL_INTERVAL, --poll=POLL_INTERVAL #调查背景工作每隔数秒。需要- b
set the poll interval if using -B (default=15)
--private-key=PRIVATE_KEY_FILE #私钥路径,使用这个文件来验证连接
use
this file to authenticate the connection
-S, --su run operations with su 用 su 命令
-R SU_USER, --su-user=SU_USER #指定SU的用户,默认是root用户
run operations with su
as this user (default=root)
-s, --sudo run operations with sudo (nopasswd)
-U SUDO_USER, --sudo-user=SUDO_USER #sudo到哪个用户,默认为 root
desired sudo user (
default=root)
-T TIMEOUT, --timeout=TIMEOUT #指定SSH默认超时时间, 默认是10S
override the SSH timeout in seconds (default=10)
-t TREE, --tree=TREE log output to this directory 将日志内容保存在该输出目录,结果保存在一个文件中在每台主机上。
-u REMOTE_USER, --user=REMOTE_USER 远程用户, 默认是root用户
connect
as this user (default=root)
--vault-password-file=VAULT_PASSWORD_FILE
vault password file
-v, --verbose verbose mode (-vvv for more, -vvvv to enable 详细信息
connection debugging)
--version show program's version number and exit 输出ansible的版本

第3章 Ansible核心配置文件讲解

3.1 Ansible主机清单配置

l  直接指明主机地址或者主机名

l  定义一个主机组。把主机地址或者主机名写进去,通过调用主机组来操作主机

l  如果没有使用公钥,想要使用密码,可以定义ansible_ssh_pass=”主机密码”

3.2 主机名或主机地址定义

Server1       #主机名

172.1.1.1.     #主机地址

3.3 主机组定义

[webservers]
Server1
Server2
Server3

192.168.1.1
192.168.1.2
192.168.1.3
或 (使用通配符)
Server[
001:100] (表示从server001 - server100的主机)