问下统信的服务器操作系统这个工具的配置方法?
发布网友
发布时间:2024-09-07 04:30
我来回答
共1个回答
热心网友
时间:2024-11-22 23:53
准备环境
适用版本:■UOS服务器操作系统d版
适用架构:■ARM64、AMD64、MIPS64
网络:连接互联网情况下进行
本次测试环境如下:
测试环境
注:请根据实际情况操作该文方法进行配置。
功能描述
ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。Ansible架构相对比较简单,仅需通过SSH连接客户机执行任务即可
安装与配置
一、安装ansible工具
1、直接 命令安装
apt install ansible -y
命令安装
2、验证安装结果
通过ansible --version验证安装结果
验证安装结果
如果命令可以正常执行,则表示ansible安装成功
3、配置ssh免密登录
在ansible-server(以下简称server)上配置对ansible-client(以下简称client)的免密登录,本次实现为实现批量操作,在server中也配置针对自己主机的免密登录。
生成密钥 ssh-keygen
生成密钥
拷贝密钥至client
ssh-copy-id root@192.168.247.154
拷贝密钥至client
拷贝密钥至server主机
ssh-copy-id root@192.168.247.131
贝密钥至server主机
二、Ansible使用
1、主机清单配置
Ansible 管理主机信息的配置文件,相当于系统 Hosts 文件的功能,默认存放在 /etc/ansible/hosts。在 hosts 文件中,通过分组来组织设备。实验配置如下:
2、ansible命令
Ansible 的维护命令大多数是以 ansible 开头,在终端输入 ansible 后连续按两次Tab键,会补全所有跟 ansible 相关的命令。
(1)ansible命令说明:
ansible 是生产环境中使用非常频繁的命令之一,主要用于临时性的维护,如查看web服务器组磁盘使用情况、复制一个文件到其他机器等。类似这些没有规律的、临时需要做的任务,我们成为非固化需求,临时一次性操作,语法如下:
ansible [options]
-v(—verbose):输出详细的执行过程信息,可以得到执行过程所有信息;
-i PATH(—inventory=PATH):指定inventory信息,默认为/etc/ansible/hosts;
-f NUM(—forks=NUM):并发线程数,默认为5个线程;
—private-key=PRIVATE_KEY_FILE:指定密钥文件;
-m NAME,—mole-name=NAME:指定执行使用的模块;
-M DIRECTORY(—mole-path=DIRECTORY) :指定模块存放路径,默认为/usr/share/ansible;
-a ARGUMENTS(—args=ARGUMENTS):指定模块参数;
-u USERNAME(—user=USERNAME):指定远程主机以USERNAME运行命令;
-l subset(—limit=SUBSET):*运行主机;
①检查所有主机是否存活,执行命令如下:
ansible all -m ping
②列出web组主机列表,执行命令如下:
③批量显示web组中的磁盘使用空间,执行命令如下:
ansible web -m command -a "df -hT"
(2)ansible-doc
ansible-doc用来查询ansible模块文档的说明,类似于man命令,针对每个模块都有详细的用法说明及应用案例介绍,语法如下:
ansible-doc ping
(3)ansible-playbook
Ansible-playbook是日常应用中使用频率最高的命令,类似于Linux中的sh或source命令,用来执行系列任务。其工作机制:通过读取预先编写好的playbook文件实现集中处理任务。ansible-playbook命令后跟yml格式的playbook文件,playbook文件存放了要执行的任务代码,命令使用方式如下:
Ansible-playbook playbook.yml
3、ansible模块
(1)command模块
command模块在远程主机执行命令,不支持管道、重定向等shell的特性。常用的参数如下:
chdir:在远程主机上运行命令前要提前进入的目录;
creates:在命令运行时创建一个文件,如果文件已存在,则不会执行创建任务;
removes:在命令运行时移除一个文件,如果文件不存在,则不会执行移除任务;
executeable:指明运行命令的shell程序;
示范:
ansible all -m command -a "ls -lst /data"
(2)shell模块
shell模块在远程主机执行命令,相当于调用远程主机的Shell进程,然后在该Shell下打开一个子Shell运行命令。和command模块的区别是它支持Shell特性:如管道、重定向等。
示范:
ansible all -m shell -a "ping www.baidu.com -c 2 "
ansible all -m shell -a “echo hello world >/data/1.txt”
(3)copy模块
copy模块用于复制指定主机文件到远程主机的指定位置。常见的参数如下:
dest:指出复制文件的目标目录位置,使用绝对路径。如果源是目录,则目标也要是目录,如果目标文件已存在,会覆盖原有内容;
src:指出源文件的路径,可以使用相对路径和绝对路径,支持直接指定目录。如果源是目录,则目标也要是目录;
mode:指出复制时,目标文件的权限,可选;
owner:指出复制时,目标文件的属主,可选;
group:指出复制时目标文件的属组,可选;
content:指出复制到目标主机上的内容,不能和src一起使用,相当于复制content指明的数据到目标文件中;
示范:
ansible web -m copy -a "src=/etc/hosts dest=/data/server.hosts mode=777 "
说明:将本机的/etc/hosts文件复制到web分组的控制端,并修改权限为777
(4)apt模块
apt模块基于apt机制,对远程主机管理程序包。常用的参数如下:
name:程序包名称,可以带上版本号。若不指明版本,则默认为最新版本;
state=present|atest|absent:指明对程序包执行的操作:present表明安装程序包,latest表示安装最新版本的程序包,absent表示卸载程序包;
disablerepo:在用apt安装时,临时禁用某个仓库的ID;
enablerepo:在用apt安装时,临时启用某个仓库的ID;
conf_file:apt运行时的配置文件,而不是使用默认的配置文件;
disable_gpg_check=yes|no:是否启用完整性校验功能;
示范:
ansible all -m apt -a "name=apache2"
ansible web -m shell -a "systemctl status apache2"
(5)service模块
service模块为用来管理远程主机上的服务的模块。常见的参数如下:
name:被管理的服务名称;
state=started|stopped|restarted:动作包含启动,关闭或重启;
enable=yes|no:表示是否设置该服务开机自启动;
runlevel:如果设定了enabled开机自启动,则要定义在哪些运行目标下自动启动;
示范:
ansible web -m service -a "name=apache2 enabled=yes state=restarted"
(6)user模块
user模块主要用于管理远程主机上的用户账号。常见的参数如下:
name:必选参数,账号名称;
state=present|absent:创建账号或者删除账号,present表示创建,absent表示删除;
system=yes|no:是否为系统账户;
uid:用户UID;
group:用户的基本组
groups:用户的附加组;
shell:默认使用的shell;
home:用户的家目录;
mve_home=yes|no:
如果设置的家目录已经存在,是否将已存在的家目录进行移动;
pssword:用户的密码,建议使用加密后的字符串;
comment:用户的注释信息;
remore=yes|no:当state=absent时,是否要删除用户的家目录;
示范:
ansible web -m user -a "name=test002 system=yes shell=/bin/bash home=/home/test002 password=123@123"
不建议用,个人尝试密码登录失败
三、playbook配置文件
1、执行配置文件
playbook配置文件使用YAML语法,具有简洁明了、结构清晰等特点。playbook配置文件类似于shell脚本,是一个YAML格式的文件,用于保存针对特定需求的任务列表。上面介绍的ansible命令虽然可以完成各种任务,但是当配置一些复杂任务时,逐条输入就显得效率非常低下。更有效的方案是在playbook配置文件中放置所有的任务代码,利用ansible-playbook命令执行该文件,可以实现自动化运维。YAML文件的扩展名通常为.yaml或.yml。YAML语法与其他高级语言类似,其结构通过缩进来展示,通过“-”来代表项;“:”用来分隔键和值;整个文件以“---”开头并以“…”结尾。
语法如下:
ansible-playbook [option] /PATH/TO/PLAYBOOK.yaml
--syntax-check:检测yaml文件的语法;
-C(—check):预测试,不会改变目标主机的任何设置;
--list-hosts:列出yaml文件影响的主机列表;
--list-tasks:列出yaml文件的任务列表;
--list-tags:列出yaml文件中的标签;
-t TAGS(—tags=TAGS):表示只执行指定标签的任务;
--skip-tags=SKIP_TAGS:表示除了指定标签的任务,执行其他任务;
--start-at-task=START_AT:从指定的任务开始往下运行;
示范: