0
点赞
收藏
分享

微信扫一扫

自动化运维工具---Ansible 的使用

幺幺零 2022-02-21 阅读 69

自动化运维工具—Ansible 的使用

ansible简介

ansible是一种自动化运维工具,基于paramiko开发的,并且基于模块化工作,Ansible是一种集成IT系统的配置管理、应用部署、执行特定任务的开源平台,它是基于python语言,由Paramiko和PyYAML两个关键模块构建。集合了众多运维工具的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的.

ansible 安装方式

ansible安装方式常用的有2种方式:yum安装和pip安装

pip安装ansible

yum install -y python-pip
pip install -y ansible

yum 安装ansible

yum install -y epel-release
yum install ansible –y

配置文件

Ansible 配置公私钥

1. 创建秘钥对

ssh-keygen

2. 将公钥进行分发

 ssh-copy-id -i /root/.ssh/id_dsa.pub root@服务器IP

Ansible 命令详解

ansible官网:https://docs.ansible.com/

命令的具体格式如下:

参数详解
-a MODULE_ARGS模块的参数,如果执行默认COMMAND的模块,即是命令参数,如: “date”,“pwd”等等
-k ,–ask-pass登录密码,提示输入SSH密码而不是假设基于密钥的验证
–ask-su-passask for su password 。su切换密码
-K,–ask-sudo-passask for sudo password。提示密码使用sudo,sudo表示提权操作
–ask-vault-passask for vault password。假设我们设定了加密的密码,则用该选项进行访问
-B SECONDS后台运行超时时间
-C拟运行环境并进行预运行,可以进行查错测试
-c CONNECTION连接类型使用
-f FORKS并行任务数,默认为5,可以针对批量执行的服务器的数量进行调整
-i INVENTORY指定主机清单的路径,默认为/etc/ansible/hosts
–list-hosts查看有哪些主机组
-m MODULE_NAME行模块的名字,默认使用 command 模块,所以如果是只执行单一命令可以不用 -m参数
-o压缩输出,尝试将所有结果在一行输出,一般针对收集工具使用
-S用 su 命令
-R SU_USER指定 su 的用户,默认为 root 用户
-s用 sudo 命令
-U SUDO_USER指定 sudo 到哪个用户,默认为 root 用户
-T TIMEOUT指定 ssh 默认超时时间,默认为10s,也可在配置文件中修改
-u REMOTE_USER远程用户,默认为 root 用户
-v查看详细信息,同时支持-vvv,-vvvv可查看更详细信息

Ansible常用模块

1. Ping模块

常用来测试主机的连通性

lzd@LAPTOP-US7ILSVQ:/mnt/c/Users/lzd$ ansible 10.131.1.5 -m ping
10.131.1.5 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}

2. Command模块

command 模块可以帮助我们在远程主机上执行命令。

2.1 chdir参数

此参数的作用就是指定一个目录,在执行对应的命令之前,会先进入到chdir参数指定的目录中。

2.2 reates参数

看到creates,你可能会从字面上理解这个参数,但是使用这个参数并不会帮助我们创建文件,它的作用是当指定的文件存在时,就不执行对应命令,比如,如果/testdir/test文件存在,就不执行我们指定的命令。

removes参数

与creates参数的作用正好相反,它的作用是当指定的文件不存在时,就不执行对应命令,比如,如果/testdir/tests文件不存在,就不执行我们指定的命令,此参数并不会帮助我们删除文件

free_form参数

必须参数,指定需要远程执行的命令,需要说明一点,free_form参数与其他参数并不相同,在之前的模块示例中,如果想要使用一个参数,那么则需要为这个参数赋值,举个例子,之前的示例模块中,大多都有path参数,当我们需要指定要操作的文件时,通常需要对path参数赋值,比如,path=/testdir/test,表示我们想要操作/testdir/test文件,但是free_form参数则不同,“free_form"并不是一个"实际存在"的参数名,比如,当我们想要在远程主机上执行ls命令时,我们并不需要写成"free_form=ls” ,这样写反而是错误的,因为并没有任何参数的名字是free_form,当我们想要在远程主机中执行ls命令时,直接写成ls即可,这就是free_form参数的含义,因为command模块的作用是执行命令,所以,任何一个可以在远程主机上执行的命令都可以被称为free_form

举报

相关推荐

0 条评论