Ansible安装及简单了解

Posted linux基础

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ansible安装及简单了解相关的知识,希望对你有一定的参考价值。

[TOC]
本文简要介绍ansible的一些情况,更为详细的使用指南,会逐步分享。

简介

ansible是一个自动化运维的工具,它可以方便的配置系统,部署软件包,管理机器等等。
ansible可以让你方便的在新搭建的测试环境上配置自己需要的基础软件,在客户现场你可以通过ansible实现一建化安装,作为自己的开发环境,ansible,可以让你专注于开发,开发环境的配置仅需要改动配置文件即可完成,而无需去手工运行各种管理复杂的安装配置命令。
而与其它devops软件相比,ansible显得更为轻量化,无需配置client,由于使用python写成,源码清晰易读,不仅自带一大批的模块,可以方便扩展,也支持第三方语言的扩展。

安装

ansible支持多种形式安装,作为一个软件,它可以通过源码安装,apt,yum,portage,pkg安装,同时,它作为一个python包,支持pip和easy_install形式安装。
ubuntu下安装如下:

$ sudo apt-get install software-properties-common
$ sudo apt-add-repository ppa:ansible/ansible
$ sudo apt-get update
$ sudo apt-get install ansible

pip 安装如下

$ sudo pip install ansible

清单

清单是ansible中的一个文件列表文件,用于指定管理配置哪些机器。
ansible的清单文件通常位于/etc/ansible/hosts
一个常用的例子如下:
>
mail.example.com
>
[webservers]
foo.example.com
bar.example.com
>
[dbservers]
one.example.com
two.example.com
three.example.com
>
ntp_server: acme.example.org

被管理的主机可以通过域名的形式直接指定,如mail服务器,也可以通过分组的方式给出,如webservers和dbservers,别名的方式也是支持的,如ntpserver。

密码有三种方式指定,一是配置无密码登陆,二是通过ansible_ssh_pass在hosts文件中指定,还有一种方式是执行命令时用-k的方式,要求输入密码。

命令行执行

ansible可以通过命令行的方式即时输入命令管理集群,也可以通过playbook 的方式批量化执行(有点儿像python,可以走repl也可以通过py文件执行)

重启

下面的命令可以重启整个存储服务器集群,按10个一组并发执行命令,如果集群里有30台机器,就是分三批执行。
>
$ ansible storageserver -a "/sbin/reboot" -f 10

任意命令

可以通过shell模块执行在指定的服务器中执行任意命令,下面的命令会查看所有raleigh机房中机器的终端.
>
$ ansible raleigh -m shell -a 'echo $TERM'

文件操作

如前文提及,ansible中自带了功能强大的各种模块,对于文件操作,copy模块,file自然可以一展身手。

下面的命令,会把本地的hosts文件拷贝到atlanta机房中的所有机器
$ ansible atlanta -m copy -a "src=/etc/hosts dest=/tmp/hosts"

下面的命令,会改名所有webserver中指定文件的权限
$ ansible webservers -m file -a "dest=/srv/foo/a.txt mode=600"

包管理

yum和apt都被ansible所支持,下面的命令分别会安装acme1.5的版本,安装acme最新版,卸载acme
>
$ ansible webservers -m yum -a "name=acme-1.5 state=present"
$ ansible webservers -m yum -a "name=acme state=latest"
$ ansible webservers -m yum -a "name=acme state=absent"

playbook

playbook是ansible中批量执行命令的文件,基于yaml格式,类似于chef中的cookbook。
下面先用一个例子演示一下,更具体的会分几篇文章来描述细节。

- hosts: webservers
  remote_user: root
  tasks:
    - name: test connection
      ping:
      remote_user: root

其中hosts表示对哪些主机进行操作,remote_user表示用什么用户来进行操作。
下面的tasks则是对任务的定义,name是独一无人的一个任务名(如果有多个同名task,只执行第一个),接着是task的任务,这边是执行ping命令,接下来是定义这个task执行用的身份,比如root。



以上是关于Ansible安装及简单了解的主要内容,如果未能解决你的问题,请参考以下文章

ansible安装及模块的管理

Ansible的安装及常用模块

ansible安装及使用

Ansible 安装 及 基础模块介绍

inotify用法简介及结合rsync实现主机间的文件实时同步

ansible自动化工具安装和简单使用