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"
相关推荐
FJW0208142 分钟前
【Linux】输入输出管理
linux·运维·服务器
遇见火星31 分钟前
Aiops探索:基于Ansible的Dify版本运维智能体落地思路
运维·服务器·ansible
晨曦夜月1 小时前
vim及其模式的操作
linux·编辑器·vim
zl_dfq1 小时前
Linux基础开发工具 之 【yum、vim、gcc/g++】
linux·1024程序员节
金仓拾光集1 小时前
筑牢风控生命线:金仓数据库替代MongoDB,重构证券融资融券业务的数据基石
数据库·mongodb·信创·1024程序员节·kingbasees·国产化替代
那我掉的头发算什么1 小时前
【数据库】navicat的下载以及数据库约束
android·数据库·数据仓库·sql·mysql·数据库开发·数据库架构
纪伊路上盛名在1 小时前
如何批量获取蛋白质序列的所有结构域(domain)数据-2
数据库·人工智能·机器学习·统计·计算生物学·蛋白质
TG_yunshuguoji2 小时前
亚马逊云渠道商:如何通过配置自动替换构建故障自愈的云架构?
运维·服务器·架构·云计算·aws
守望时空332 小时前
使用virt-manager图形化创建和管理KVM虚拟机
linux·kvm
期待着20132 小时前
StarRocks 集群安装部署文档
linux·服务器