Ansible部署

一、添加主机

(1)清单

清单是定义了Ansible要管理的一批主机,分为静态清单和动态清单

(2)静态清单

可单独定义主机,每行一个,也可以定义主机组,用[]括起来

样例:

[root@osp ~]# vim /etc/ansible/hosts

ansible 自动拓展硬盘 ansible批量添加主机_linux

清单可以通过正则表达式来表示主机范围

(3)验证主机是否属于清单
[root@osp ~]# ansible 172.16.10.9 --list-hosts
  hosts (1):
    172.16.10.9

若验证成功则可以开始进行密钥设置

若不成功可能原因为主机设置错误,可查看/etc/ansible/hosts进行修改

(4)配置SSH密钥认证
[root@network ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:jSE91C8qp8Aggx+xonToDK6/TxJz140soSulldhILQc root@network.example.com
The key's randomart image is:
+---[RSA 2048]----+
|  E     ..       |
|  .o   o  .      |
|. +oo o +  .     |
|*++B o = B. .    |
|B=*+B o S.o.     |
|.+.Boo..o        |
|. + o. +         |
|.  +  .          |
| .oo.            |
+----[SHA256]-----+
一直回车即可
[root@osp ~]# ssh-copy-id 172.16.10.9  #此处需要填入被管理主机地址
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@172.16.10.9's password:    #这里需要输入被管理主机密码

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '172.16.10.9'"
and check to make sure that only the key(s) you wanted were added.
(5)进行ansible Ping测试
[root@osp ~]# ansible all -m ping

ansible 自动拓展硬盘 ansible批量添加主机_服务器_02

若出现此类错误,可能原因为hosts配置错误,或者是对方端口或者服原因导致ssh失败

ansible 自动拓展硬盘 ansible批量添加主机_管理软件_03

Ansible中ping不仅是测试连通性,还需要进行ssh测试

二、Ansible模块使用

模块类别

模块

文件模块

copy:将本地文件复制到受管主机

file:设置文件的权限和其他属性

linuinfile:确保特定行是否在文件中

synchronzie:使用rsync同步内容

软件包模块

package:使用操作系统本机的自动检测软件包管理器管理软件包

yum:使用yum软件包管理器管理软件包

apt:使用APT软件包管理器管理软件包

dnf:使用DNF软件包管理软件

gem:管理Ruby gem

pip:从pip管理Python软件包

系统模块

firewalld:使用firewalld管理任意端口和服务

reboot:重启计算机

service:管理服务

user:添加删除和管理用户账户

Net Tools模块

get_url:通过HTTP、HTTPS或者FTP下载文件

nmcli:管理网络

uri:与web交互

Copy模块使用
[root@osp ~]# ansible all -m copy -a "src=/root/yum.sh dest=/root"
172.16.10.9 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": true, 
    "checksum": "59f0d4a57aca78af5a2de2d1b6a3f743cc56b19d", 
    "dest": "/root/yum.sh", 
    "gid": 0, 
    "group": "root", 
    "md5sum": "c8b63e1cb629efd2e2e83886ceaee79b", 
    "mode": "0644", 
    "owner": "root", 
    "size": 1851, 
    "src": "/root/.ansible/tmp/ansible-tmp-1658216908.4-19466-48483588382868/source", 
    "state": "file", 
    "uid": 0
}

ansible 自动拓展硬盘 ansible批量添加主机_ansible 自动拓展硬盘_04

[root@network ~]# ls
anaconda-ks.cfg  yum.sh
Copy各类参数

参数名

作用

src

指定需要copy的文件或者目录

dest

指定拷贝到主机的哪个目录

yum模块

格式:ansible 172.16.10.10 -m yum -a “name=httpd state=installed”

参数

作用

name

指定软件名称信息

state

操作软件状态installed、present与absent、removed

latest

安装最新软件

服务模块

service

[root@localhost~]# ansible 172.16.10.10 -m service -a "name=crond state=started enabled=yes"

参数

作用

enabled

设置服务是否为开启自启动

name

启动或者停止的服务器名称

state

restarted(重启)started(启动)stopped(停止)