ansible在ubuntu下的安装和使用

发布时间:2023年12月20日

ansible在ubuntu下的安装和使用

安装和配置

中文文档: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
文章来源:https://blog.csdn.net/qq_23858785/article/details/135112525
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。