查看 ansible 执行过程
交互式填写 ssh 密码
测试在 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
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 | 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
| [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
模块:
列出 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 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
|