自动化运维Ansible之安装部署

目录

  • 1、SSH分发
  • 2、安装Ansible
  • 3、Ansible清单管理

1、SSH分发

ansible自动化部署条件

1.建议基于ssh密钥方式建立远程连接

2.基于ssh口令方式建立远程连接(不建议)

在部署之前需要保证管理主机受控主机能够基于ssh密钥的方式进行远程连接

管理主机生成SSH密钥(私钥和公钥),分发公钥到每台受控主机

1.安装sshpass

[[email protected] ~]# yum install sshpass -y

2.生成密钥

//  直接生成密钥
[[email protected] ~]# ssh-keygen -t dsa -f /root/.ssh/id_dsa -N ""
Generating public/private dsa key pair.
Created directory ‘/root/.ssh‘.
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
SHA256:gfr8/bG2IAzxNJiom7WGwba8G26BZ5yfxJMp6O3Ouh4 [email protected]
The key‘s randomart image is:
+---[DSA 1024]----+
|                 |
|     . +         |
|    . = +        |
| . . . + o       |
| +=ooo. S        |
|ooBB*+ o         |
|.EO=ooo o . .    |
| o+=o  . o ..o   |
|.=O=    . .o+.   |
+----[SHA256]-----+

3.分发密钥

//  免交互式批量分发公钥脚本
[[email protected] ~]# vim ~/ssh-fenfa.sh
#!/bin/bash
rm -f /root/.ssh/id_dsa
ssh-keygen -t dsa -f /root/.ssh/id_dsa -N ""
  for ip in 7 8
do
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no" 10.4.7.$ip
done

// 执行脚本
[[email protected] ~]# sh ~/ssh-fenfa.sh

4.一键ssh登录测试for循环

[[email protected] ~]# for i in 7 8 ;do ssh 10.4.7.$i  date ;done
Mon Feb  3 17:23:50 CST 2020
Mon Feb  3 17:23:50 CST 2020

2、安装Ansible

安装方法有很多,这里仅仅以Centos7 yum安装为例。

Ansible软件默认不在标准仓库中,需要用到repo源。

1.需在管理机器上安装:

// 添加repo
[[email protected] ~]# yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

// yum安装ansilbe
[[email protected] ~]# yum install ansible -y
[[email protected] ~]# rpm -qa ansible

// 检查ansible版本
[[email protected] ~]# ansible --version
ansible 2.9.2
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u‘/root/.ansible/plugins/modules‘, u‘/usr/share/ansible/plugins/modules‘]
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Aug  4 2017, 00:39:18) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)]

2.添加主机清单

[[email protected] ~]# vim /etc/ansible/hosts
[sa]
10.4.7.7
10.4.7.8

[sa] 分组下添加了两个hosts

3、测试ansible

ping模块用于测试ansible与被受控端的连通性

[[email protected] ~]# ansible sa -m ping
10.4.7.8 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}
10.4.7.7 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}

3、Ansible清单管理

主机清单路径:/etc/ansible/hosts

/etc/ansible/hosts主机资产清单文件,用于定义被管理主机的认证信息, 例如ssh登录用户名、密码以及key相关信息。如何配置Inventory文件

主机可以是IP地址形式出现也可以是主机名的形式出现,但是以主机名形式出现就必须要在ansible机器上有对应主机名和IP地址的hosts解析

主机:

1.主机支持主机名通配以及正则表达式,例如web[1:3].jason.com代表三台主机

2.主机支持基于非标准的ssh端口,例如web1.jason.com:6666

3.主机支持指定变量,可对个别主机的特殊配置,如登陆用户,密码

4.主机组支持指定变量[group_name:vars],同时支持嵌套组[game:children]

主机组:

1.支持嵌套组,例如[game:children],那么在game模块下面的组都会被game所包含

2.支持指定变量,例如[game:vars]在下面指定变量

  • 基于密码连接
[[email protected] ~]# cat /etc/ansible/hosts

// 方式一、主机+端口+密码
[webservers]
10.0.0.31 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=‘123456‘
10.0.0.41 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=‘123456‘

// 方式二、主机+端口+密码
[webservers]
web[1:2].jason.com ansible_ssh_pass=‘123456‘

// 方式三、主机+端口+密码
// 添加三台主机至webserver【low版】
[webservers]
web1.jason.com
web2.jason.com
web3.jason.com

// 添加三台主机至webserver【改良版】
[webservers]
web[1:3].jason.com

// 添加三台主机至webserver【密码版】
[webservers]
web1.jason.com ansible_ssh_pass=‘123456‘
web2.jason.com ansible_ssh_pass=‘123456‘
web3.jason.com ansible_ssh_pass=‘123456‘

// 添加三台主机至webserver【密码改良版】
[webservers]
web[1:3].jason.com ansible_ssh_pass=‘123456‘

// 添加三台主机至webserver【密码拆分版】
[webservers]
web1.jason.com
web2.jason.com
web3.jason.com
[webservers:vars]
ansible_ssh_pass=‘123456‘
  • 基于密钥连接,需要先创建公钥和私钥,并下发公钥至被控端
// 利用非交换式工具实现批量分发公钥与批量管理服务器
[[email protected] ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
[[email protected] ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

// 方式一、主机+端口+密钥
[group_name]
10.0.0.31:22
10.0.0.41

// 方式二、别名+主机+端口+密钥
[group_name]
nfs-node1 ansible_ssh_host=10.0.0.31 ansible_ssh_port=22
  • 主机组使用方式
// 方式一、主机组变量+主机+密码
[apache]
web1.jason.com
web2.jason.com
web3.jason.com
[apache:vars]
ansible_ssh_pass=‘123456‘

// 方式二、主机组变量+主机+密钥
[nginx]
10.0.0.7
10.0.0.8

// 定义多组,多组汇总整合
// webservers组包括两个子组[apapche,nginx]
[webservers:children]
[group_name1]
[nginx]
  • ansible [主机模块名] --list-hosts
//  查看该主机模块中所定义的主机的IP地址
[[email protected] ~]# ansible nginx --list-hosts
 hosts (2):
  10.0.0.7
  10.0.0.8

原文地址:https://www.cnblogs.com/jasonminghao/p/12635384.html

时间: 2024-10-30 18:48:17

自动化运维Ansible之安装部署的相关文章

自动化运维工具---SaltStack安装部署及简单案例

SaltStack原理 SaltStack由Master(服务端)和Minion(客户端)组成,Master和Minion之间通过ZeroMQ(消息队列)进行通讯,Master和Minion分别监听4505与4506端口,4505为master与minion认证通信端口,4506为master用来发送或者接受minion的命令执行返回信息. 当客户端启动后,会主动链接master端注册,然后一直保持该TCP连接,而master通过这条TCP连接对客户端进行控制,如果连接断开,master将对客户

自动化运维Ansible之Roles部署配置LAMP架构

Roles介绍 Ansible为了层次化.结构化地组织Playbook,使用了角色(roles).Roles能够根据层次型结构自动装载变量文件.task以及handlers等.简单来讲,roles就是通过分别将变量.文件.任务.模块及处理器放置于单独的目录中,并可以便捷地include它们,roles一般用于基于主机构建服务的场景中,但也可以用于构建守护进程等场景中. 创建Roles 创建roles时一般需要以下步骤:首先创建以roles命名的目录.然后在roles目标下分别创建以个角色名称命令

自动化运维工具SaltStack详细部署【转】

==========================================================================================一.基础介绍==========================================================================================1.简介SaltStack是一个服务器基础架构集中化管理平台,具备配置管理.远程执行.监控等功能,一般可以理解为简化版的pupp

自动化运维Ansible批量部署服务+shell脚本批量推送公钥

一.概述分析 由于互联网的快速发展导致产品更新换代速度逐渐加快,运维人员每天都要进行大量的维护操作,仍旧按照传统方式进行维护会使得工作效率低下.这时,部署自动化运维就可以尽可能安全.高效地完成这些工作.一般会把自动化运维工具划分为两类:一类是需要使用代理工具的,也就是基于专用的ABem程序来完成管理功能,如: Puppet.Func. Zabbix等:另外一类是不需要配置代理工具的,可以直接基于SSH服务来完成管理功能,如: Ansible. Fabric等. - 下面介绍几款功能类似的自动化运

Linux下的自动化运维ansible工具

什么是自动化运维     随着信息时代的持续发展,IT运维已经成为IT服务内涵中重要的组成部分.面对越来越复杂的业务, 面对越来越多样化的用户需求,不断扩展的IT应用需要越来越合理的模式来保障IT服务能灵活便捷.安 全稳定地持续保障,这种模式中的保障因素就是IT运维(其他因素是更加优越的IT架构等).从初期的 几台服务器发展到庞大的数据中心,单靠人工已经无法满足在技术.业务.管理等方面的要求,那么标 准化.自动化.架构优化.过程优化等降低IT服务成本的因素越来越被人们所重视.其中,自动化最开始作

自动化运维之ansible-安装部署与基础命令篇

一.Ansible简介 Ansible基于Python语言开发,集合了众多优秀运维工具的优点,实现了批量运行命令.部署程序.配置系统等功能. 二.安装部署Ansible服务 Ansible自动化运维环境由控制主机与被管理主机组成,由于Ansible是基于SSH协议进行通信的,所以控制主机安装Ansible软件后不需要重启或允许任何程序,被管理主机也不需要安装和运行任何应用程序. Ansible案例环境 角色 ip地址 组名 控制主机 192.168.174.209 被管理主机1 192.168.

自动化运维Ansible之Playbook剧本(持续更新)

附上前两篇关于Ansible的博客地址,以供查阅,欢迎学习交流!自动化运维之Ansible概述及Ansible部署Ansible命令应用之常用模块 Playbook简介 playbook是ansible用于配置,部署,和管理被控节点的剧本. 通过playbook的详细描述,执行其中的一系列tasks,可以让远端主机达到预期的状态.playbook就像Ansible控制器给被控节点列出的的一系列to-do-list,而被控节点必须要完成. 也可以这么理解,playbook 字面意思,即剧本,现实中

Saltstack自动化运维工具 实战与部署

自动化工具比较 Puppet也许是四款工具中最深入人心的.就可用操作.模块和用户界面而言,它是最全面的.Puppet呈现了数据中心协调的全貌,几乎涵盖每一个运行系统,为各大操作系统提供了深入的工具.初始设置比较简单,只需要在需要加以管理的每个系统上安装主服务器和客户端代理软件.命令行接口(CLI)简单直观,允许通过puppet命令下载和安装模块.然后,需要对配置文件进行更改,好让模块适合所需的任务;应接到指令的客户端与主服务器联系时,会更改配置文件,或者客户端通过立即触发更改配置文件的推送(pu

自动化运维之Cobbler自动化系统部署

Cobbler简介 运维自动化包括标准化.工具化.Web化.服务化.智能化等几个不同的层级,在一家规模稍大.拥有服务器上千台甚至是几万台的生产环境中,想要真正实现运维自动化,工具化系统安装流程.统一系统安装规范,是其中最不能忽略的重要环节.普通的自动化部署可以采用pxe+dhcp+tftp配合kickstart实现,但是面对多版本.多部署需求的情况下,这种普通的部署方式可能达不到我们的要求:这时候就需要借助cobbler开源自动化部署工具来实现. Cobbler是一款快速的网络系统部署工具,其最