Ansible-技巧积累

查看 ansible 执行过程

1
ansible test -v -m ping

交互式填写 ssh 密码

1
ansible all -k -m ping

测试在 inventory 中定义的变量

如在 inventory 中有:

1
2
3
4
5
6
test:
hosts:
fedora:
ansible_host: 192.168.177.25
vars:
tt: "hello"

则可以用:

1
ansible test -i inventory.yaml -m debug -a "var=tt"

来检测.

查看所有 hosts group 信息

1
ansible-inventory --list

便于 yaml 编写的 vim 基本配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
" 启用语法高亮
syntax on

" 为 YAML 文件启用自动缩进
autocmd FileType yaml setlocal ai ts=2 sw=2 et

" 启用文件类型检测
filetype plugin indent on

" 设定缩进宽度
set tabstop=2
set shiftwidth=2
set expandtab

" 显示行号
set number

" 高亮匹配的括号
set showmatch

" 启用语法折叠
set foldmethod=syntax

ser mouse=a

常写 Playbook 内容

结构:

一些常见的组成有:

  • Hosts
  • Tasks
  • Variables
  • Templates
  • Handlers 和 Notify
  • Tags

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
---
- hosts: WebServer
remote_user: root
gather_facts: no

tasks:
- name: Install zabbix repo
shell: rpm -Uvh https://repo.zabbix/6.2/rhel/8/x86_64/zabbix-release-6.2-3.el8.noarch.rpm
- name: Install zabbix agent
yum:
name=zabbix-agent2
state=present
- name: Enable server
service:
name: zabbix-agent2
state: started
enabled: yes
...

运行之前, 一般先语法检查:

1
ansible-playbook --syntax-check xxx.yml

查看可用模块列表

1
ansible-doc -l

若只查看内置模块:

1
ansible-doc -l | grep "^ansible.builtin."

一些常见模块:

  • dnf, yum_repository
  • firewalld, service
  • nmcli, uri, get_uri
  • cron
  • parted, lvg, lvol, filesystem, mount
  • hostname
  • shell

用 ini 格式编写 inventory 指定用户

1
2
3
4
5
6
7
8
# Inventory 文件
[webservers]
web1 ansible_host=192.168.1.10 ansible_user=admin
web2 ansible_host=192.168.1.11 ansible_user=admin

[dbservers]
db1 ansible_host=192.168.1.20 ansible_user=postgres
db2 ansible_host=192.168.1.21 ansible_user=postgres

执行 ad-hoc 时仅检查, 不实际执行

启用 -C (--check) 选项:

1
ansible all -C -a "ping baidu.com"

查看一个模块的使用

如查看 service 模块:

1
ansible-doc service

列出 inventory 中定义的所有主机

1
ansible all --list-hosts

这里的 all 是一个特殊的 host group name, 代表所有主机.

输出如:

1
2
3
hosts (2):
192.168.177.21
192.168.177.111

ansible 查找配置文件

参考 stack overflow

Ansible 查找配置文件的顺序为:

  • ansible.cfg, 当前目录下
  • ~/.ansible.cfg, 家目录下
  • /etc/ansible/ansible.cfg

查看 ansible 基本信息

1
ansible --version

输出如:

1
2
3
4
5
6
7
8
9
ansible [core 2.16.6]
config file = None
configured module search path = ['/home/jie/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3.12/site-packages/ansible
ansible collection location = /home/jie/.ansible/collections:/usr/share/ansible/collections
executable location = /usr/bin/ansible
python version = 3.12.3 (main, Apr 23 2024, 09:16:07) [GCC 13.2.1 20240417] (/usr/bin/python)
jinja version = 3.1.3
libyaml = True

这里 config file = None 的意思是 ansible 没有找到配置文件.

查看本机状态信息

1
ansible -m setup localhost

Ansible-技巧积累
http://example.com/2024/05/17/Ansible-技巧积累/
作者
Jie
发布于
2024年5月17日
许可协议