ansible--安装

本文详细介绍了Ansible的发展历史、功能、特性、架构及其注意事项,并提供了安装教程,包括关闭防火墙、安装软件、配置主机清单、创建密钥对、设置SSH免交互登录等步骤,帮助读者快速掌握Ansible的安装与使用。
摘要由CSDN通过智能技术生成

一、简介

1、发展历史

作者: Michael DeHaan ( Cobbler与 Func作者)
ansible的名称来自《安德的游戏》中跨越时空的即时通信工具
2012-03-09,发布0.0.1版,2015-10-17,Red Hat宣布1.5亿美元收购
官网: https:.//www.ansible.com/
官方文档: https://docs.ansible.com/

在这里插入图片描述

2、功能

在这里插入图片描述

Ansible可以同时管理Redhat系的Linux,Debian系的Linux,以及Windows主机。管理节点只在执行脚本时与远程主机连接,没有特别的同步机制,所以断电等异常一般不会影响ansbile

3、 特性

  • 模块化:调用特定的模块,完成特定任务
  • Paramiko (python对ssh的实现),PyYAML,Jinja2(模板语言)三个关键模块
  • 支持自定义模块,可使用任何编程语言写模块
  • 基于Python语言实现
  • 部署简单,基于python和SSH(默认已安装),agentless,无需代理不依赖PKI(无需ssl)
  • 安全,基于OpenSSH
  • 幂等性:一个任务执行1遍和执行n遍效果一样,不因重复执行带来意外情况
  • 支持playbook编排任务,YAML格式,编排任务,支持丰富的数据结构
  • 较强大的多层解决方案role

4、架构

在这里插入图片描述ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
(1)、连接插件connection plugins:负责和被监控端实现通信;
(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
(3)、各种模块核心模块、command模块、自定义模块;
(4)、借助于插件完成记录日志邮件等功能;
(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。
(6)、ansible的架构:连接其他主机默认使用ssh协议

5、注意事项

  • 执行ansible的主机一般称为主控端,中控,master或堡垒机
  • 主控端Python版本需要2.6或以上
  • 被控端Python版本小于2.4需要安装python-simplejson·
  • 被控端如开启SELinux需要安装libselinux-python
  • windows不能做为主控端

二、安装ansible

管理端192.168.221.10
被管理端1192.168.221.20
被管理端2192.168.221.30

1、关闭防火墙(所有节点)

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# setenforce 0
[root@localhost ~]# hostnamectl set-hostname ansible
[root@localhost ~]# su
[root@ansible ~]# 

[root@localhost ~]# hostnamectl set-hostname node1
[root@localhost ~]# su
[root@node1 ~]# 

[root@localhost ~]# hostnamectl set-hostname node2
[root@localhost ~]# su
[root@node2 ~]# 

2、安装相关软件

[root@localhost ~]# yum -y install epel-release.noarch  #安装epel源
[root@localhost ~]# yum install -y ansible

[root@localhost ~]# ansible  --version    #查看ansible版本


[root@localhost ~]# yum install -y tree
[root@localhost ~]# tree /etc/ansible/   #树状结构展示文件夹
/etc/ansible/
├── ansible.cfg   #ansible配置文件
├── hosts         #ansible的主仓库,用于存储需要管理的远程主机的相关信息
└── roles         #角色

3、修改主机清单

[root@localhost ~]# vim /etc/ansible/hosts    #配置主机清单
#以下内容为添加内容,不是修改内容
[webservers]
192.168.221.20    #被监控端1的IP
[mysql]
192.168.221.30    #被监控端2的IP

4、创建密钥对,进行远程连接

#生成密钥对
[root@localhost ~]# 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):      #输入密码abc123
Enter same passphrase again:                     #确认密码abc123
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:WKpIMqbJgc2JyTz2C351d7bzbDJ83wUsyf1oKXaq82c root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|                 |
|        .        |
|+= .   +   . +   |
|*B=   o S   + +  |
|==+. o . . o . = |
|oo..o . . + + = o|
|. ...     .B.BE o|
| ...      .+X=...|
+----[SHA256]-----+


[root@localhost ~]# ls -al
drwx------.  2 root root   38 4   2 08:54 .ssh

[root@localhost ~]# cd .ssh/
[root@localhost .ssh]# ls
id_rsa  id_rsa.pub    #id_rsa:私钥;id_rsa.pub:公钥

5、将公钥上传到被监控端

[root@localhost .ssh]# ssh-copy-id root@192.168.221.20

[root@localhost .ssh]# ssh-copy-id root@192.168.221.30


#在监控端登录被监控端查看日期
[root@localhost ~]# ansible 192.168.221.20 -m command -a 'date'
Enter passphrase for key '/root/.ssh/id_rsa':    #输入之前设置的密码:abc123
192.168.221.20 | CHANGED | rc=0 >>
2021 04 02 星期五 11:23:16 CST


[root@localhost ~]# ansible mysql -m command -a 'date'   #当然也可以用别名进程查看
Enter passphrase for key '/root/.ssh/id_rsa': 
192.168.221.30 | CHANGED | rc=0 >>
2021 04 02 星期五 11:24:20 CST


-m:指定模块
-a:指定参数

6、设置ssh免交互登录

[root@localhost ~]# ssh-agent bash
[root@localhost ~]# ssh-add
Enter passphrase for /root/.ssh/id_rsa: 
Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值