Ansible--批量 linux/unix服务器管理工具

理论部分:

  1. 常用的自动化运维工具:

Puppet

—基于 Ruby 开发,采用 C/S 架构,扩展性强,基于 SSL,远程命令执行相对较弱

SaltStack

—基于 Python 开发,采用 C/S 架构,相对 puppet 更轻量级,配置语法使用 YMAL,使得配置脚本更简单

Ansible

—基于 Python paramiko 开发,分布式,无需客户端,轻量级,配置语法使用 YMAL 及 Jinja2 模板语言,更强的远程命令执行操作

其他 DevOps 请参看:https://github.com/geekwolf/sa-scripts/blob/master/devops.md

2.ansible简介:

Ansible 是一个简单的自动化运维管理工具,可以用来自动化部署应用、配置、编排 task(持续交付、无宕机更新等),采用 paramiko 协议库(fabric 也使用这个),通过 SSH 或者 ZeroMQ 等连接主机,大概每 2 个月发布一个主版本

简单的说:    让我们自动化部署APP;自动化管理配置项;自动化的持续交付;自动化的(AWS)云服务管理。 批量的在远程服务器上执行命令 。

Ansible则是提供了一套简单的流程,你要按照它的流程来做,就能轻松完成任务.

3.Ansible 工作机制:

基于 paramiko 开发的。这是一个纯Python实现的ssh协议库,Ansible 在管理节点将 Ansible 模块通过 SSH 协议(或者 Kerberos、LDAP)推送到被管理端执行,执行完之后自动删除,可以使用 SVN 等来管理自定义模块及编排

4.Ansible 的组成:

由 5 个部分组成:

Ansible:核心

Modules:包括 Ansible 自带的核心模块及自定义模块

Plugins:完成模块功能的补充,包括连接插件、邮件插件等

Playbooks:网上很多翻译为剧本,个人觉得理解为编排更为合理;定义 Ansible 多任务配置文件,有 Ansible 自动执行

Inventory:定义 Ansible 管理主机的清单

5.ansible的优点: 
1、轻量级,他不需要去客户端安装agent,更新时,只需要在操作机上进行一次更新即可.
2、批量任务执行可以写成脚本,而且不用分发到远程就可以执行. 
3、使用python编写的,维护更简单,ruby语法过于复杂 .
4、支持sudo.

实验部分:

1.安装ansible

实验环境 :


角色


Hostname


SystemRelease


IP address


node1


node1.server.com


Rhel-6.5_x86_64


192.168.1.63


node2


node2.server.com


Rhel-6.5_x86_64


192.168.1.64


server


ansible.server.com


CentOS-6.5_x86_64


192.168.1.20

准备工作:

关闭iptables:

各个服务器节点的配置

1、节点1的配置,修改主机名

[[email protected] ~]# service iptables stop

[[email protected] ~]# chkconfig iptables off

[[email protected] ~]# hostname node1.server.com

[[email protected] ~]# vim /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=node1.server.com

logout 注销 重新登录 或者是reboot 重启

2、节点2的配置,修改主机名:

[[email protected] ~]# service iptables stop

[[email protected] ~]# chkconfig iptables off

[[email protected] ~]# hostname node2.server.com

[[email protected] ~]# vim /etc/sysconfig/network

//添加如下内容:

NETWORKING=yes

HOSTNAME=node2.server.com

logout 注销 重新登录 或者是reboot 重启

在Ansible服务器配置:

  1. 防火墙和主机名配置

[[email protected] ~]# service iptables stop

[[email protected] ~]# chkconfig iptables off

[[email protected] ~]# hostname ansible.server.com

[[email protected] ~]# vim /etc/sysconfig/network

添加:

NETWORKING=yes

HOSTNAME=ansible.server.com

重启或者是logout

  1. 添加hosts解析

    [[email protected] ~]# vim /etc/hosts #编辑hosts文件

    [[email protected] ~]# tail -3 /etc/hosts

    192.168.1.63 node1.server.com #node1

    192.168.1.64 node2.server.com #node2

    192.168.1.20 ansible.server.com #ansible

测试连通性

[[email protected] ~]# ping node1.server.com

[[email protected] ~]# ping node2.server.com

  1. 配置EPEL源

[[email protected] ~]#

rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

[[email protected] ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

[[email protected] ~]# yum install ansible -y #安装ansible

2.ansible的配置文件及作用

[[email protected] ~]# rpm -ql ansible | more

/etc/ansible

/etc/ansible/ansible.cfg #主配置文件

/etc/ansible/hosts #节点主机列表

/etc/ansible/roles

/usr/bin/ansible

/usr/bin/ansible-console

/usr/bin/ansible-doc

/usr/bin/ansible-galaxy

/usr/bin/ansible-playbook

/usr/bin/ansible-pull

/usr/bin/ansible-vault

3. 编辑/etc/ansible/hosts(节点配置文件):

[[email protected] ~]# vim /etc/ansible/hosts

[[email protected] ~]# tail -3 /etc/ansible/hosts

[webserver]

node1.server.com

node2.server.com

//其他内容可以全部注释掉

  1. 配置ansible端能基于密钥认证的方式联系各被管理节点。

[[email protected] ~]# ssh-keygen #生成密钥对

5、把密钥发往各个节点服务器上:

[[email protected] ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

[[email protected] ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

Ansible简单测试

ansible命令

格式:ansible  节点名称   [ -m  模块]   -a  命令参数

例:

  1、查看各个节点的时间

[[email protected] ~]# ansible all -a date

[[email protected] ~]# ansible all -m command -a date

//以上两条命令结果是一样的,因为默认调用 command 模块,所以可以省略, all 表示所有节点, -a 后面是参数

2、查看各个节点在线情况

[[email protected] ~]# ansible all -m ping //内建的ping模块

3、在各个节点输出指定信息

[[email protected] ~]# ansible all -a "/bin/echo hello,world" #输出信息

[[email protected] ~]# ansible all -a "/bin/df -h" #输出挂载信息

[[email protected] ~]# ansible all -a "/sbin/ip addr show dev eth0 " #查看各节点的 eth0 网卡信息

Ansible-playbook

1、Playbook是通过yaml文件来配置实现的,先来介绍下yaml语法!

      YAML的语法和其他高阶语言类似,并且可以简单表达清单、散列表、标量等数据结构。\

其结构(Structure)通过空格来展示,序列(Sequence)里的项用"-"来代表,Map里的键值对用":"分隔。YAML文件扩展名通常为.yaml,如example.yaml

2、Playbook可以用来管理复杂任务

     对于需反复执行的、较为复杂的任务,我们可以通过定义 Playbook 来搞定。Playbook 是 Ansible 真正强大的地方,它允许使用变量、条件、循环、以及模板,也能通过角色 及包含指令来重用既有内容。下面我们来看看一些具体的实例。

1:批量安装mysql-server软件:

[[email protected] ~]# vim mysql-server.yaml #建立mysql-server .yaml文件

内容如下: (注意语法格式)

选项解析:

hosts:webserver         #指定要执行指定任务的主机,其可以是一个或多个由冒号分隔主机组

remote_user:root         #用于指定远程主机上的执行任务的用户

tasks:                       #  任务

-name:mysql-server installing    # 给这个任务起的名字

yum:name=php           #利用yum模块,安装软件的包名为mysql-server

state=present                 #状态为安装  

state=absent                  #状态为卸载

检查node是否已经安装mysql-server

[[email protected] ~]# ansible all -a "/bin/rpm -q mysql-server "

[[email protected] ~]# ansible-playbook mysql-server.yaml

看到结果,ok=2    changed=1 说明客户机上的mysql-server安装成功了!

验证一下 mysql-server是否成功

[[email protected] ~]# ansible all -a "/bin/rpm -q mysql-server "

[[email protected] ~]# ansible all -a "/sbin/service mysqld start " #启动mysqld

案例2 创建crontab计划

1.建立cron.yaml,让每月10号来运行/root/backup.sh脚本

[[email protected] ~]# vim crond.yaml

内容如下:

  1. 执行

    [[email protected] ~]# ansible-playbook crond.yaml

看到结果,ok=2    changed=1 说明客户机上的crontab计划创建成功了!

  1. [[email protected] ~]# ansible all -a ‘crontab -l ‘ #查看各个节点crontab:

注:

"ansible-doc -l" 命令来查看它内置的有哪些模块。

"ansible-doc  模块名"  命令来查看具体模块的详细用法。

使用ansible批量的添加用户

方法一:直接使用ansible命令

[[email protected] ~]# openssl passwd -salt -l "abc123"

-luVlrZexUGHM

[[email protected] ~]# ansible all -m user -a "name=baigujing password=-luVlrZexUGHM shell=/bin/bash " -u root

方法二:定义主机清单在使用ansible命令

[[email protected] ~]# openssl passwd -salt -l "abc123"

-luVlrZexUGHM

[[email protected] ~]# vim hosts #添加主机地址

[[email protected] ~]# ansible -i hosts webserver -m user -a "name=tester password=-luVlrZexUGHMshell=/bin/bash " -u root

参数解释:

-i #指定 inventory文件的位置;

webserver #清单文件中的主机组名称

-m #指定模块,不加此选项默认使用command模块

user #添加用户的模块

-a #编写模块内支持的指定

-u #指定远程用户

注意:密码不能是明文 注意是password 不是passwd

.注意password必须是密文的,直接添加到/etc/shadow文件中

创建用户组:

ansible -i test puppet -m group -a "name=test state=present" -u root

#建立用户组,使用的是新的模块 group

删除用户:

ansible -i hosts webserver -m user -a "name=tester remove=yes state=absent" -u root

方法三:编写yaml文件

1,生成密钥

[[email protected] ~]# openssl passwd -salt -l "abc123"

-luVlrZexUGHM #生成salt密钥

2.编辑yaml文件

[[email protected] ~]# vim useradd.yaml #编辑文件

[[email protected]ible ~]# cat useradd.yaml #查看内容

- hosts: webserver #定义主机组

user: root #远程链接用户

vars:

user: jerry #添加的用户名

tasks: #任务

- name: add user #任务名称

action: user name={{ user }} password=-luVlrZexUGHM shell=/bin/bash home=/home/{{ user }} #指定用户相关的信息 密码 必须是密文salt加密 登录shell 宿主目录

3.执行yaml文件

[[email protected] ~]# ansible-playbook useradd.yaml

成功

    1. 客户端节点验证

      [[email protected] ~]# ansible all -a "/usr/bin/tail -1 /etc/shadow"

      用户名jerry 没错 密码就是通过第一步生成的 abc123

      切换用户验证

      输入明文abc123 即可

时间: 2024-11-04 00:24:21

Ansible--批量 linux/unix服务器管理工具的相关文章

批量Linux、Windows管理工具BatchShell 1.2(最新版)

简介: BatchShell是什么: BatchShell是一款基于SSH2的批量文件传输及命令执行工具,它可以同时传输文件到多台远程服务器以及同时对多台远程服务器执行命令.具备以下主要功能:    ... BatchShell是什么: BatchShell是一款基于SSH2的批量文件传输及命令执行工具,它可以同时传输文件到多台远程服务器以及同时对多台远程服务器执行命令. 具备以下主要功能:     1. 多服务器批量文件传送.接收     2. 多服务器远程命令交互     3. 快速远程桌面

Supervisor安装与配置(Linux/Unix进程管理工具)

http://blog.csdn.net/xyang81/article/details/51555473 https://www.liaoxuefeng.com/article/0013738926914703df5e93589a14c19807f0e285194fe84000 1,Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统.它可以很方便

goPanel 2 for Mac(Web服务器管理工具)

goPanel 2 for Mac是一款实用的Web服务器管理软件,拥有超过30种独特功能,能与专用服务器或虚拟专用服务器一起使用.可以安装与管理以下服务:如Apache或Nginx.PHP.MySQL或MariaDB.Mail Server和FTP.本 goPanel 2 for Mac是一个非常直观的OS X应用程序,用于管理Web服务器,是您在基于Unix的服务器上安装的用于Web托管的现有控制面板应用程序的替代方案.易于安装和配置Apache或Nginx Web服务器,PHP,MySQL

Linux下进程管理工具之(二):htop

实验环境: CentOS release 6.6(Final)  一台 IP地址:172.16.249.230 Htop是一款运行于Linux系统监控与进程管理软件,用于取代Unix下传统的top.与top只提供最消耗资源的进程列表不同,htop提供所有进程的列表,并且使用彩色标识出处理器.swap和内存状态. 用户一般可以在top无法提供详尽系统信息的情况下选择安装并使用htop.比如,在查找应用程序的内存泄漏问题时.与top相比,htop提供更方便.光标控制的界面来杀死进程. htop用C语

【转】Linux下XenServer管理工具安装

转载文章 - Linux下XenServer管理工具安装 Xen-Server 6.5 虚拟机安装Linux系统 vmware安装ubuntu12.04嵌套安装xen server(实现嵌套虚拟化) Citrix XenServer ® 6.5 虚拟机用户指南 2015 年 03 月 26 日 (星期四)发行 1.0 版

Windows 10安装AD远程服务器管理工具

Win10正式版的远程服务器管理工具下载:32位 /64位 时间和语言 区域和语言,添加语言 英语 英语(美国) 安装好后,点击选项 下载第一项(忘记截图) 语言包下载完成 安装之前下载对应版本的远程服务器管理工具 安装完成(重启) 出现了Active Directory用户和计算机

windows10 专业版的远程服务器管理工具下载

一.安装远程服务器管理工具: 下载地址: https://www.microsoft.com/zh-cn/download/details.aspx?id=45520 二.关闭远程服务器管理工具: 1 在桌面上右击"开始",进入"程序和功能" 2 单击程序,然后在程序和功能中单击"启用或关闭 Windows 功能". 3 在 Windows 功能对话框中,展开远程服务器管理工具,然后展开"角色管理工具"或"功能管理工

Linux服务器管理工具之进程管理工具top、htop、glances、dstat详解

在企业生产环境中,系统管理员通常要不定时的检查服务器上各资源的使用状况,如CPU使用率,负载,磁盘的读写速率,网络传输状况等等.因此,掌握一个进程管理工具的熟练使用,无疑对管理员的工作有事半功倍的效果.本文借助CentOS6.6向读者尽可能详细讲解top.htop.glances.以及dstat工具的使用方法和技巧.    A.top工具 top是CentOS系统自带的一款动态显示系统资源使用状况的进程管理工具,类似于windows下的任务管理器,其支持交互式命令以及定制显示内容.在命令行键入t

Windows上管理远程Linux VPS/服务器文件工具 - winscp

Linux上经常会经常需要编辑文件,特别是Linux VPS/服务器安装好系统之后配置环境会需要修改很多的配置文件等,对于常用Linux的基本上都能够熟练使用vi或者nano等SSH下面的文件编辑工具,但是对于新接触VPS或者服务器的Linux新手来说还是稍微有些难度的,今天介绍一款适合新手或者懒人使用的Windows上管理远程Linux VPS/服务器上文件的工具 - winscp. 一.winscp是什么? WinSCP 是一款SFTP和FTP的客户端,同时也支持SCP(Secure CoP