Ansible简单部署与使用

目录

环境

  • Ubuntu 20.04

安装Ansible

apt install

bash 复制代码
sudo apt install ansible

markupsafe error

安装成功后,尝试运行ansible,部分环境下会有如下报错:

bash 复制代码
ubuntu@ubuntu:~$ ansible --version
Traceback (most recent call last):
  File "/usr/bin/ansible", line 62, in <module>
    import ansible.constants as C
  File "/usr/lib/python3/dist-packages/ansible/constants.py", line 12, in <module>
    from jinja2 import Template
  File "/usr/lib/python3/dist-packages/jinja2/__init__.py", line 33, in <module>
    from jinja2.environment import Environment, Template
  File "/usr/lib/python3/dist-packages/jinja2/environment.py", line 15, in <module>
    from jinja2 import nodes
  File "/usr/lib/python3/dist-packages/jinja2/nodes.py", line 23, in <module>
    from jinja2.utils import Markup
  File "/usr/lib/python3/dist-packages/jinja2/utils.py", line 656, in <module>
    from markupsafe import Markup, escape, soft_unicode
ImportError: cannot import name 'soft_unicode' from 'markupsafe' (/home/ubuntu/.local/lib/python3.8/site-packages/markupsafe/__init__.py)

上述报错通常是markupsafe版本不兼容导致,查看markupsafe的版本:

bash 复制代码
ubuntu@ubuntu:~$ pip show markupsafe
Name: MarkupSafe
Version: 2.1.5
Summary: Safely add untrusted strings to HTML/XML markup.
Home-page: https://palletsprojects.com/p/markupsafe/
Author:
Author-email:
License: BSD-3-Clause
Location: /home/ubuntu/.local/lib/python3.8/site-packages
Requires:
Required-by: Werkzeug

回退到2.0.1版本可以解决:

bash 复制代码
python -m pip install markupsafe==2.0.1

ansible可成功运行:

bash 复制代码
ubuntu@ubuntu:~$ ansible --version
ansible 2.9.6
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/ubuntu/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.8.10 (default, Nov 22 2023, 10:22:35) [GCC 9.4.0]

配置Ansible

创建个人目录

为了不影响系统配置,可以在个人的自定义目录下运行ansible,基于个人的配置文件:

bash 复制代码
mkdir -p /home/ubuntu/mydir/ansible

ansible.cfg

拷贝系统的cfg文件到个人目录下进行修改:

bash 复制代码
cp /etc/ansible/ansible.cfg /home/ubuntu/mydir/ansible

修改cfg文件:

powershell 复制代码
[defaults]
inventory      = /home/ubuntu/mydir/ansible/hosts

[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False

hosts

拷贝系统的hosts文件到个人目录下进行修改:

bash 复制代码
cp /etc/ansible/hosts /home/ubuntu/mydir/ansible

修改hosts文件:

powershell 复制代码
[my_test]
#10.5.3.202 ansible_ssh_port=22 ansible_ssh_user=test ansible_ssh_pass='123' ansible_su_pass='123'
10.5.3.202

[my_test:vars]
ansible_ssh_user=test
ansible_ssh_pass="123"

测试Ansible

ping

测试受控主机的连通性:

bash 复制代码
ubuntu@ubuntu:~/mydir/ansible$ ansible my_test -m ping
10.5.3.202 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}

批量执行自定义命令

常用命令

bash 复制代码
ansible my_test -m shell -a "bash xxx.sh"
ansible my_test -m copy -a "src=/home/ubuntu/xxx.sh dest=/home/test/ mode=775"
ansible my_test -m file -a "path=/home/test/xxx.sh group=test owner=test"
相关推荐
lhxwished几秒前
MySQL
数据库·mysql·adb
嘤嘤奶嘴酱2 分钟前
dedecms(四种webshell姿势)aspcms webshell漏洞复现
数据库·servlet
喝醉酒的小白2 分钟前
PG表空间
运维
goTsHgo17 分钟前
Clickhouse如何完全保证数据的去重
数据库·clickhouse
Dylanioucn17 分钟前
【编程底层原理】亿级数据表查询最后10条记录limit 99999990,10性能为啥特慢,而且数据库都被查宕机了
数据库·oracle
goTsHgo18 分钟前
从底层原理上理解ClickHouse 中的稀疏索引
数据库·clickhouse
叶落无痕5224 分钟前
关于安卓App自动化的一些想法
android·运维·自动化·android studio
打败40434 分钟前
nginx_shell脚本扩展配置虚拟主机三种方式
运维·nginx·docker·flask
3分云计算36 分钟前
一.Oracle每日运维操作
运维
IOT.FIVE.NO.141 分钟前
Linux实操笔记2 Ubuntu安装Nginx的不同方法
linux·笔记·ubuntu