Ansible 使用说明
[TOC]
1.安装
mac 系统下可以通过homebrew
来安装,安装脚本如下:
brew install ansible
安装是否成功校验,执行ansible --version
命令,打印如下信息说明安装成功:
ansible 2.9.11
config file = None
configured module search path = ['/Users/tomcat/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/local/Cellar/ansible/2.9.11/libexec/lib/python3.8/site-packages/ansible
executable location = /usr/local/bin/ansible
python version = 3.8.5 (default, Jul 21 2020, 10:48:26) [Clang 11.0.3 (clang-1103.0.32.62)]
2.配置
2.1 创建.ansible.cfg
文件
MacOS上安装完Ansilbe,需要手动创建配置文件(如上配置显示:config file = None
表示未配置配置文件)。.ansible.cfg
是 ansible 的全局配置文件,编辑 ~/.ansible.cfg
文件,将 官方提供的全局配置 ansible.cfg 复制到该文件中。
$ vi ~/.ansible.cfg
指定 inventory 目录的路径为 /usr/local/etc/ansible/hosts
,这个路径可以根据个人喜好规定。
2.2 配置hosts文件
切换到 /usr/local/etc 目录下创建 ansible 目录,并创建 hosts 文件,将 官方提供的 hosts 配置 复制到该文件下。之后还有其它配置文件都可以放在 /usr/local/etc/ansible/ 目录下,方法同 hosts 配置文件。
注意:ansible 默认使用当前系统用户,如果需要指定用户,可以添加ansible_user=userName
配置指定用户
[test-hosts]
192.168.6.1 ansible_user=root
192.168.6.2 ansible_user=root
192.168.6.3 ansible_user=root
3. 使用
3.1 ansible 命令
# 查询远程服务器的状态
ansible 192.168.4.1 -a uptime
3.2 ansible-playbook
一个demo如下:
# 1. 更新logstash.yml 文件并推送到集群中
# 2. 重启logstash服务
# YAML 还有一个怪癖. 所有的 YAML 文件(无论和 Ansible 有没有关系)开始行都应该是 ---. 这是 YAML 格式的一部分, 表明一个文件的开始.
# Ansible 使用 “{{ var }}” 来引用变量,foo: "{{ variable }}"
---
- name: deploy logstash
remote_user: root
hosts: test_logstash
tasks:
#拷贝配置文件到远程服务器
- name: 推送配置文件
copy:
src: logstash.yml
dest: /root/logstash/logstash-6.4.3/config
owner: root
backup: yes
#执行重启命令
- name: 重启logstash
systemd:
name: logstash
state: restarted
4.Ansible异步动作和轮询
默认情况下,Ansible同步运行任务,并保持与远程节点的连接打开,直到操作完成。这意味着在playbook中,每个任务默认都会阻塞下一个任务,后续任务要等待当前任务执行完后才能运行。这种模式可能存在一些问题,例如,一个任务完成所需的时间可能超过SSH会话允许的时间,从而导致超时。或者长时间运行的进程在后台执行,异步模式使您可以控制长时间运行的任务的执行方式。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。