ansible在ubuntu下的安装和使用
本文目录
- ansible在ubuntu下的安装和使用
- 安装和配置
- 虚拟机配置
- 安装和验证
- 简单使用
- 创建 ansible cfg 和 inventory 文件
- 创建剧本并执行
- 使用 ansible vault 加密
安装和配置
中文文档:http://www.ansible.com.cn/docs/intro_installation.html#apt-ubuntu
虚拟机配置
- Minimal Installed Ubuntu 22.04 | 20.04
- Regular user with sudo privileges
- 2 CPU / vCPU
- 2 GB RAM or more
- 20 GB Hard drive
- Internet Connection

安装和验证
sudo apt update
sudo apt-get install ansible


安装成功后,执行命令验证 ansible
的版本
ansible --version

简单使用
创建 ansible cfg 和 inventory 文件
ansible默认的主配置文件位置:
/etc/ansible/ansible.cfg
ansible主机清单:/etc/ansible/hosts
如果没有的话需要自行创建
- 下载官方配置文件
mkdir demo
cd ~/demo
wget https://raw.githubusercontent.com/ansible/ansible/stable-2.9/examples/ansible.cfg
- 修改配置文件
[defaults]
inventory = /home/demo/inventory
host_key_checking = False
[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False
- 创建
inventory
文件
vim inventory
- 添加对主机的分组和管理
// 本地测试,只添加本机localhost
[local]
localhost ansible_connection=local
- 重新执行命令,确认是否设置了新的配置文件
ansible --version

- 执行测试命令
ansible all -m ping
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'

原因是没有默认的inventory
,需要指定-i
选项来明确指定主机文件的位置
- 指定主机文件并重新执行
ansible all -m ping -i ~/demo/inventory

- 检查 inventory 文件存在
ls -l ~/demo/inventory

创建剧本并执行
- 创建
yaml
文件作为剧本
vim demo.yaml
---
- hosts: local
name: local test
tasks:
- name: Check disk usage
command: df -h

- 使用
ansible-playbook
命令运行剧本
ansible-playbook demo.yml

-
报错
"module_stderr": "sudo: a password is required\n"
在ansible
中执行需要提升权限的任务时需要sudo
权限,但是没有提供密码 -
修改
yaml
文件,添加权限指定sudo密码
---
- hosts: local
name: local test
become: true
become_method: sudo
vars:
ansible_become_password: xxxxxx
tasks:
- name: Check disk usage
command: df -h
https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_privilege_escalation.html
- 执行结果

- 输出结果到终端
---
- hosts: local
name: local test
become: true
become_method: sudo
vars:
ansible_become_password: 123456
tasks:
- name: Check disk usage
command: df -h
register: disk_usage # 注册变量以存储命令输出
- name: Show disk usage
debug:
msg: "{{ disk_usage.stdout_lines }}" # 使用debug模块显示输出

使用 ansible vault 加密
- 新建密码文件
ansible-vault create secret.yml

- 添加文件内容
ansible_become_password: your_password
查看创建后的文件内容
- 剧本中引用加密文件
---
- hosts: local
name: local test
become: true
become_method: sudo
vars_files:
- secret.yaml
tasks:
- name: Check disk usage
command: df -h
register: disk_usage # 注册变量以存储命令输出
- name: Show disk usage
debug:
msg: "{{ disk_usage.stdout_lines }}" # 使用debug模块显示输出
- 使用
--ask-vault-pass
运行playbook
ansible-playbook demo.yaml --ask-vault-pass
