第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执行过程,其中暖色调的代表已经模块化
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的主机)