Ansible常用操作-ansible模块

1.Ansible介绍

1.1 Ansible简介

(1)Ansible不需要安装客户端,通过sshd去通信(无密钥登陆)。

(2)Ansible无服务器端,使用时直接运行命令。

(3)Ansible基于模块工作,模块可以由任何语言开发。

(4)Ansible不仅支持命令行使用模块,也支持编写Yaml格式的playbook,易于编写和阅读。

(5)Ansible安装十分简单,CentOS上可直接Yum安装。

(6)Ansible有提供UI(浏览器图形化)www.ansible.com/tower,收费的官方文档 http://docs.ansible.com/ansible/latest/index.html。

Ansible已经被RedHat公司收购,它在Github(https://github.com/ansible/ansible)上是一个非常受欢迎的开源软件。

一本不错的入门电子书 https://ansible-book.gitbooks.io/ansible-first-book/ 

1.2 Ansible系统架构

Ansible的系统架构如图1所示。

(1)Ansible:核心程序(核心引擎)

(2)Core Modules:核心模块,主要操作是通过调用核心模块来完成管理任务(Ansible自带模块)

(3)Custom Modules:自定义模块,如果核心模块不足以完成某种功能,可以添加自定义模块来完成功能,支持多种语言。

(4)Plugins:插件,完成模块功能的补充,借助插件完成记录日志,邮件等功能。

(5)Playbooks:剧本定义Ansible任务的配置文件,可以将多个任务定义在一个剧本中,有Ansible自动执行,剧本支持多个任务,可以由控制主机运行多个位置,同时对多台远程主机进行管理。Playbooks是Ansible的配置、部署和编排语言,可以描述一个想要的运程系统执行策略或一组步骤的一般过程.

(6)Connectior plugins:连接插件,Ansible基于连接插件连接到各个主机上,负责和被管节点实现通信(Ansible和Host通信使用)

(7)Host Inventory:主机清单,定义Ansible管理的主机策略,默认是在Ansible的hosts配置文件中定义被管节点,记录由Ansible管理的主机信息,包括端口、密码、IP等。

1.3 Ansible执行流程

如图2所示,Ansible在运行时,首先读取ansible.cfg中的配置,根据规则获取Inventory中的管理主机列表,并行的在这些主机中执行配置的任务,最后等待执行返回的结果。

2.Ansible安装

(1)环境准备

修改主机名

rootalocalhost ~]# hostnamectl set-hostname ansible-test]
rootalocalhost ~l# bash

在两台机器上关闭防火墙和SELinux

[root@ansible-test1 ~]# systemctl stop firewalld
[root@ansible-test1 ~]# systemctl disable firewalld
[root@ansible-test1 ~]# setenforce 0

修改/etc/hosts文件

[root@ansible-test1 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.2.10 ansible-test1	//添加两台主机的IP和主机名
192.168.2.20 ansible-test2

(2)安装Ansible 

准备两台机器anisble-01和anisble-02,只需要在anisble-01上安装Ansible,先安装epel仓库

[root@ansible-test1 ~]# yum install epel-release -y 
[root@ansible-test1 ~]# yum install -y ansible
[root@ansible-test1 ~]# ansible --version
ansible 2.9.27config file = /etc/ansible/ansible,cfgconfigured module search path = [u'/root/.ansible/plugins/modules’, u'/usr/share/ansible/plugins/modules']ansible python module location = /usr/lib/python2.7/site-packages/ansibleexecutable location =/usr/bin/ansiblepython version = 2.7,5 (default, Apr 11 2018,07:36:10) [GCc 4.8.5 20150623 (Red Hat 4.8.5-28)]

(3)免密配置 

 anisble-01上生成密钥对ssh-keygen -t rsa,把公钥放到anisble-02上,设置密钥认证

[root@ansible-test1 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
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:noXQMFFeEGuct0KdmqnqPaKwPZawovbauE6ejo22hfQ root@ansible-test1
The key's randomart image is:
+---[RSA 2048]----+
|      +o+o.      |
|       * = .     |
|      . O +      |
|       + * .     |
| .      S o      |
|o o    o +       |
|.= E  . o        |
|*OO .o.          |
|%@O*o...         |
+----[SHA256]-----+
[root@ansible-test1 ~]# ssh-copy-id 192.168.20.45
/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@192.168.20.45's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '192.168.20.45'"
and check to make sure that only the key(s) you wanted were added.

[root@ansible-test1 ~]# ssh 192.168.20.45
Last login: Mon Dec  9 19:01:28 2024 from 192.168.20.1
[root@ansible-test2 ~]# exit
logout
Connection to 192.168.20.45 closed.

(4)主机组设置

 在/etc/ansible/hosts文件中添加本机和另一台机器的IP

[root@ansible-test1 ~]# grep ^[^#] /etc/ansible/hosts 
[testhost]
127.0.0.1

2.1 Ansible远程登录执行命令-command

[root@ansible-test1 ~]# ansible testhost -m command -a "hostname"
The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:XAJ0u7oW+LkZyLPHW0KHB984o9XoOdFoRq6Z6kS31s4.
ECDSA key fingerprint is MD5:96:9a:2e:7e:a5:2a:9c:54:2f:5d:84:b2:20:f0:0e:dd.
Are you sure you want to continue connecting (yes/no)? yes
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值