ansible自动化运维必备工具详解

第2章 ansible简单介绍:

2.1 ansible是什么?

  • ansible是新出现的 自动化 运维工具 , 基于Python研发 。 糅合了众多老牌运维工具的优点实现了批量操作系统配置、批量程序的部署、批量运行命令等功能。 仅需在管理工作站上安装 ansible 程序配置被管控主机的 IP 信息,被管控的主机无客户端。 ansible 应用程序存在于 epel( 第三方社区 ) 源,依赖于很多 python 组件
  • python语言是运维人员必会的语言!
    ansible是一个基于Python开发的自动化运维工具
    ansible的功能实现基于SSH远程连接服务
    ansible可以实现批量系统配置,批量软件部署,批量文件拷贝,批量运行命令等功能

2.2 ansible特点:

  • 模块化设计,调用特定的模块来完成特定任务,本身是核心组件,短小精悍:
  • 基于Python语言实现,由
  • Paramiko (python 的一个可并发连接 ssh主机功能库 ) ,PyYAML和Jinja2 ( 模板化 ) 三个关键模块实现;
    1)不需要单独安装客户端,基于系统自带的sshd服务,sshd就相当于ansible的客户端
    2)不需要服务端
    3)需要依靠大量的模块实现批量管理
    4)配置文件/etc/ansible/ansible.cfg
  • 配置文件

  • ansible 应用程序的主配置文件/etc/ansible/ansible.cfg
  • Host Inventory 定义管控主机 :/etc/ansible/hosts

遵循 INI风格;中括号中的字符是组名;一个主机可同时属于多个组;

[webserver]

172.16.1.7

172.16.1.8

[server]

172.16.1.7

  1. 3.     A collection of hosts belonging tothe‘webservers‘ group;一批主机属于一个组,例如定义为 ‘webservers‘ 的组

[webservers]

172.16.1.31

175.16.1.31

#[webservers] 组名  下面是管理的主机 可以实现批量管理一个组的主机,前提必须是sshkey秘钥认证。

注意:默认是以 root 用户执行,但是基于 ssh 连接操作要多次输入密码,为方便可以使用基于 ssh 密钥方式进行认证

第3章 安装ansible

3.1 mo1管理机安装ansible

#安装ansible之前需要安装epel.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

 

#安装ansible工具

yum -y install ansible

3.2 所有被管理端需要安装:

#管理的机器必须安装

yum -y install libselinux-python

#安装完毕以后检查

[[email protected] ~]# rpm -qa | grep libselinux-python
libselinux-python-2.0.94-7.el6.x86_64

第4章 ansible命令帮助

ansible-doc命令:获取模块列表,及模块使用格式;

ansible-doc -l :获取列表查看所有的模块

ansible-doc -s  module_name :获取指定模块的使用信息

ansible-doc -s service 查看指定模块用法

ansible 命令常用参数

-C, --check           don‘t make any changes; instead, tryto predict some

Connection Options: #检查不做任何改动;相反, 尝试预测一些

-v    显示输出信息   -vvvv  最多可以4v

#ansible 命令帮助参数详解

[[email protected] /]# ansible --help

Usage: ansible <host-pattern> [options]

Options:

-a MODULE_ARGS, --args=MODULE_ARGS

module arguments

--ask-vault-pass      ask forvault password

-BSECONDS, --background=SECONDS

run asynchronously,failing after X seconds

(default=N/A)

-C, --check           don‘t make any changes; instead, tryto predict some

of the changes that mayoccur

-D,--diff            when changing (small)files and templates, show the

differences in thosefiles; works great with --check

-eEXTRA_VARS, --extra-vars=EXTRA_VARS

set additional variablesas key=value or YAML/JSON

-fFORKS, --forks=FORKS

specify number ofparallel processes to use

(default=5)

-h,--help            show this help messageand exit

-iINVENTORY, --inventory-file=INVENTORY

specify inventory hostpath

(default=/etc/ansible/hosts) or comma separated host

list.

-lSUBSET, --limit=SUBSET

further limit selectedhosts to an additional pattern

--list-hosts          outputs alist of matching hosts; does not execute

anything else

-m MODULE_NAME,--module-name=MODULE_NAME

module name to execute(default=command)

-M MODULE_PATH,--module-path=MODULE_PATH

specify path(s) tomodule library (default=None)

--new-vault-password-file=NEW_VAULT_PASSWORD_FILE

new vault password filefor rekey

-o,--one-line        condense output

--output=OUTPUT_FILE  output filename for encrypt or decrypt; use - for

stdout

-PPOLL_INTERVAL, --poll=POLL_INTERVAL

set the poll intervalif using -B (default=15)

--syntax-check        perform asyntax check on the playbook, but do not

execute it

-tTREE, --tree=TREE  log output to thisdirectory

--vault-password-file=VAULT_PASSWORD_FILE

vault password file

-v,--verbose         verbose mode (-vvv formore, -vvvv to enable

connection debugging)

--version             showprogram‘s version number and exit

Connection Options:

control as whom and how to connect to hosts

-k,--ask-pass      ask for connectionpassword

--private-key=PRIVATE_KEY_FILE, --key-file=PRIVATE_KEY_FILE

use this file toauthenticate the connection

-uREMOTE_USER, --user=REMOTE_USER

connect as this user(default=None)

-cCONNECTION, --connection=CONNECTION

connection type to use(default=smart)

-TTIMEOUT, --timeout=TIMEOUT

override the connectiontimeout in seconds

(default=10)

--ssh-common-args=SSH_COMMON_ARGS

specify common arguments topass to sftp/scp/ssh (e.g.

ProxyCommand)

--sftp-extra-args=SFTP_EXTRA_ARGS

specify extra argumentsto pass to sftp only (e.g. -f,

-l)

--scp-extra-args=SCP_EXTRA_ARGS

specify extra argumentsto pass to scp only (e.g. -l)

--ssh-extra-args=SSH_EXTRA_ARGS

specify extra argumentsto pass to ssh only (e.g. -R)

Privilege Escalation Options:

controlhow and which user you become as on target hosts

-s,--sudo          run operations with sudo(nopasswd) (deprecated, use

become)

-USUDO_USER, --sudo-user=SUDO_USER

desired sudo user(default=root) (deprecated, use

become)

-S,--su            run operations with su(deprecated, use become)

-RSU_USER, --su-user=SU_USER

run operations with suas this user (default=root)

(deprecated, usebecome)

-b,--become        run operations withbecome (does not imply password

prompting)

--become-method=BECOME_METHOD

privilege escalationmethod to use (default=sudo),

valid choices: [ sudo |su | pbrun | pfexec | doas |

dzdo | ksu | runas ]

--become-user=BECOME_USER

run operations as thisuser (default=root)

--ask-sudo-pass     ask for sudopassword (deprecated, use become)

--ask-su-pass       ask for supassword (deprecated, use become)

-K,--ask-become-pass

ask for privilegeescalation password

4.1 ansible语法格式

.ansible 命令格式

ansible <host-pattern>  [-m module_name]  [-a args]

命令     主机模式      指定模块默认(command) d


<host-pattern>


指明管控主机,以模式形式表示或者直接给定 IP,必须事先定义在文件中; all 设置所有;主机组;


[-m module_name]


使用那种模块管理操作,所有的操作都需要通过模块来指定

默认不指定模块是command


[-a args]


指明模块专用参数; args 一般为 key=value 格式

注意:command模块的参数非为kv格式,而是直接给出要执行的命令即可;  如:-a  "hostname"

注意: <host-pattern> 默认读取 /etc/ansible/hosts ,也可以指明自定义文件路径

-iPATH, --inventory=PATH:指明使用的host inventory文件路径;

4.2 ☆常用模块 (module_name) :

4.3 重要模块功能总结

ansible重要模块功能总结
    command(重要模块)执行命令模块,ansible命令执行默认模块
    shell (重要模块)执行shell脚本模块
    script (重要模块)把脚本发到客户端,然后执行;执行脚本命令在远端服务器上
    copy (重要模块)把本地文件发送到远端
    cron    (重要模块)编写定时任务的模块

4.3.1 command(命令模块)

默认模块,可省略。在远程主机上进行操作命令。 -a "hostname"

注意: comand 模块的参数非 key=value 格式,直接给出要执行的命令

4.3.2 cron(定时任务模块)

-a  "name= state=  minute=  hour= day= month=  weekday= job="

4.3.3 cron常用参数详解

4.3.4 定时实战操作

#通过ansible 给主机172.16.1.41添加一个定时任务 描述信息为 By Kaile uptime 每隔一个小时五分钟更新一次系统时间

#首先可以管理机器上进行测试

ansible 172.16.1.41 -C -m cron -a "name=‘ByKaile uptime‘ minute=5 job=‘/usr/sbin/ntpdate

time.nist.gov >/dev/null 2>&1‘"

#给172.16.1.4主机创建定时任务

[[email protected] /]# ansible 172.16.1.41 -m cron -a"name=‘By Kaile uptime‘ minute=5 job=‘/usr/sbin/ntpdate time.nist.gov>/dev/null 2>&1‘"

172.16.1.41 | SUCCESS => {

"changed": true,

"envs": [],

"jobs": [

"By Kaile uptime"

]

}

#检查定时任务

[[email protected] /]# ansible 172.16.1.41 -a"crontab -l"

172.16.1.41 | SUCCESS | rc=0 >>

#Ansible: By Kaile uptime

05 * * * * /usr/sbin/ntpdate time.nist.gov>/dev/null 2>&1

4.3.5 删除指定的定时任务

4.3.6 定时任务注释

[email protected] /]# ansible  172.16.1.31 -m cron -a "name=‘timecrontab‘  disabled=‘yes‘job=‘/usr/sbin/ntpdate  time.nist.gov>/dev/null 2>&1‘"

172.16.1.31 | SUCCESS => {

"changed": true,

"envs": [],

"jobs": [

"time crontab"

]

}

[[email protected] /]# ansible  172.16.1.31 -a "crontab -l"

172.16.1.31 | SUCCESS | rc=0 >>

#crond-id-001:time sync  By Kaile

*/5 * * * * /usr/sbin/ntpdate time.nist.gov>/dev/null 2>&1

#-002:time backup

00 00 * * * /bin/sh /server/scripts/nfs_back.sh>/dev/null 2>&1

#Ansible: time crontab

#* * * * * /usr/sbin/ntpdate  time.nist.gov >/dev/null 2>&1

定时任务开启注释信息

[[email protected] /]# ansible  172.16.1.31 -m cron -a "name=‘timecrontab‘  disabled=‘no‘job=‘/usr/sbin/ntpdate  time.nist.gov>/dev/null 2>&1‘"

172.16.1.31 | SUCCESS => {

"changed": true,

"envs": [],

"jobs": [

"time crontab"

]

}

[[email protected] /]# ansible  172.16.1.31 -a "crontab -l"

172.16.1.31 | SUCCESS | rc=0 >>

#crond-id-001:time sync  By Kaile

*/5 * * * * /usr/sbin/ntpdate time.nist.gov>/dev/null 2>&1

#-002:time backup

00 00 * * * /bin/sh /server/scripts/nfs_back.sh>/dev/null 2>&1

#Ansible: time crontab

* * * * * /usr/sbin/ntpdate  time.nist.gov >/dev/null 2>&1

4.4 环境准备IP列表


服务器说明


外网IP


内网IP


主机名


nginx web


10.0.0.8/24


172.16.1.7/24


web02


NFS存储服务器


10.0.0.31/24


172.16.1.31/24


nfs01


rsync备份服务器


10.0.0.41/24


172.16.1.41/24


backup


管理服务器


10.0.0.61/24


172.16.1.61/24


m01

第5章 ansible基础配置

5.1 ansibile命令语法格式

5.2 常用参数模块

5.3 ansible的配置文件:

[[email protected] ~]# tree /etc/ansible/

/etc/ansible/

├── ansible.cfg     #ansible配置文件

├── hosts           #被ansible管理的主机名单(分组)

└── roles

 

1 directory, 2 files

5.4 编辑ansible的主机配置文件hosts,添加主机组zhaokai

[[email protected] ~]# cp /etc/ansible/hosts{,.bak}  #改前备份可是个好习惯

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

[guanli]

172.16.1.31

172.16.1.41

172.16.1.61

172.16.1.7

5.5 进行测试

如果设置了ssh密钥连接的话,hosts文件到这里就算配置完毕了。但是我们还没有设置,因此还需要对ansible的主机映射文件/etc/ansible/hosts继续加工

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

[zhaokai]

172.16.1.31 ansible_ssh_user=root ansible_ssh_pass=登录密码

172.16.1.41 ansible_ssh_user=root ansible_ssh_pass=登录密码

172.16.1.61 ansible_ssh_user=root ansible_ssh_pass=登录密码

172.16.1.7 ansible_ssh_user=root ansible_ssh_pass=登录密码

172.16.1.8 ansible_ssh_user=root ansible_ssh_pass=登录密码

命令说明:

ansible_ssh_user:ssh连接的用户名

ansible_ssh_pass:ssh连接的密码

注意:
如果没有做密钥认证,hosts又没有如上方式配置的话,ansible进行远程连接是会失败的。

5.6利用ansible远程批量执行命令

语法:

ansible zhaokai -m command -a ‘uptime‘
ansible 主机组 -m ansible内置功能模块名 -a 命令

ansible命令测试

示例1:获取172.16.1.8的主机的w信息

[[email protected] ~]# ansible 172.16.1.8 -m command -a"w"

172.16.1.8 | SUCCESS | rc=0 >>

 13:44:07 up  5:323 users, load average:0.00, 0.01, 0.05

USER    TTY      FROM              [email protected]   IDLE  JCPU   PCPU WHAT

root    tty1     -                Sat09   14:16   0.070.07s -bash

root    pts/0    172.16.1.1      Mon23   13:290.08s  0.00s -bash

root    pts/1    m01              13:44    0.000.140.00s /bin/sh -c /usr

 

[[email protected] ~]#

5.7获取整个zhaokai主机组的对应的“w”信息

[[email protected] ~]# ansible zhaokai -m command -a "w"

172.16.1.8 | SUCCESS | rc=0 >>

 13:45:12 up  5:333 users, load average:0.00, 0.01, 0.05

USER    TTY      FROM              [email protected]   IDLE  JCPU   PCPU WHAT

root    tty1     -                Sat09   15:21   0.070.07s -bash

root    pts/0    172.16.1.1      Mon23   13:300.08s  0.00s -bash

root    pts/1   m01              13:45    0.000.120.00s /bin/sh -c /usr

 

172.16.1.61 | SUCCESS | rc=0 >>

 21:05:58 up  6:343 users, load average:0.00, 0.01, 0.05

USER    TTY      FROM              [email protected]   IDLE  JCPU   PCPU WHAT

root    tty1     -                14:41    4:220.070.07s -bash

root    pts/0    172.16.1.1       16:44    2.001.110.67s /usr/bin/python

root    pts/8   m01              21:05    1.000.100.00s /bin/sh -c /usr

 

172.16.1.7 | SUCCESS | rc=0 >>

 12:05:07 up  1:052 users, load average:0.00, 0.01, 0.05

USER    TTY      FROM              [email protected]   IDLE  JCPU   PCPU WHAT

root    tty1     -                11:00   26:21   0.09s  0.09s -bash

root    pts/0   m01              12:05    0.000.300.00s /bin/sh -c /usr

 

172.16.1.41 | SUCCESS | rc=0 >>

 22:36:51 up 18:392 users, load average:0.00, 0.01, 0.05

USER    TTY      FROM              [email protected]   IDLE  JCPU   PCPU WHAT

root    tty1     -                03:58   58:54   0.110.11s -bash

root    pts/0   m01              22:36    0.000.320.00s /bin/sh -c /usr

 

172.16.1.31 | SUCCESS | rc=0 >>

 13:45:13 up  6:492 users, load average:0.00, 0.01, 0.05

USER    TTY      FROM              [email protected]   IDLE  JCPU   PCPU WHAT

root    tty1     -                Mon20   13:42   0.150.15s -bash

root    pts/0   m01              13:45    0.000.300.00s /bin/sh -c /usr

 

[[email protected] ~]#

5.8调用ansible内置的copy模块

[[email protected] ~]# ansible 172.16.1.8 -m copy -a"src=/etc/hosts dest=/tmp"                  #输入命令

172.16.1.8 | SUCCESS => {

    "changed": true,

    "checksum":"dba0126bf49ea8d4cdc476828f9edb37085c6afe",

    "dest":"/tmp/hosts",

    "gid":0,

    "group":"root",    #文件复制过去以后的属组

    "md5sum":"09bad48d0c62411850fd04b68f836335",

    "mode":"0644",     #文件复制过去以后的权限

    "owner":"root",    #文件复制过去以后的属主

    "secontext":"unconfined_u:object_r:admin_home_t:s0",

    "size":294,

    "src":"/root/.ansible/tmp/ansible-tmp-1489411262.1-267125154401179/source",

    "state":"file",

    "uid":0

}

[[email protected] ~]# ansible 172.16.1.8 -m command -a "ls/tmp" #查看一下对方主机目录下有啥

172.16.1.8 | SUCCESS | rc=0 >>     

ansible_0qlGau

hosts               #在这里呢,拷贝成功

pulse-d3qHAaSjkIhZ

pulse-PbcqlrG9QxEK

virtual-root.yrc60j

yum.log

 

[[email protected] ~]# ssh [email protected] "ls /tmp" #用ssh再看一下

`[email protected]‘s password: `

hosts               #在这里呢拷贝成功

pulse-d3qHAaSjkIhZ

pulse-PbcqlrG9QxEK

virtual-root.yrc60j

yum.log

[[email protected] ~]#

 

 

 

命令说明:

-m:调用ansible内置模块   copy  拷贝模块

-a:接命令。由于调用了copy模块,命令格式发生改变。src=本地文件路径 dest=目的地所在路径

示例4:调用copy模块实现保存文件的属性改变

[[email protected] ~]# ansible 172.16.1.8 -m copy -a"src=/etc/hosts dest=/tmp owner=zhaokai group=zhaokai mode=600"

172.16.1.8 | SUCCESS => {

    "changed": true,

    "checksum":"dba0126bf49ea8d4cdc476828f9edb37085c6afe",

    "dest":"/tmp/hosts",

    "gid":502,

    "group":"zhaokai",

    "mode":"0600",

    "owner":"zhaokai",

    "path":"/tmp/hosts",

    "secontext":"unconfined_u:object_r:admin_home_t:s0",

    "size":294,

    "state":"file",

    "uid":502

}

[[email protected] ~]# ssh [email protected] "ls -l/tmp/hosts"

`[email protected]‘s password: `

-rw-------. 1 zhaokai zhaokai 2943月  1414:00 /tmp/hosts

 

命令说明:
对于ansible内置模块的使用,大家参考命令执行后的返回信息里看就可以了。写的很清楚。

备注:
copy模块,如果复制的对方主机路径下没有目录,那么会递归创建

特别提示:

ansible的部分模块并不支持
1)管道符 “|”
2)重定向 “> < >> <<”
3)类似top,tail -f这种不能即刻返回明确信息的命令
4)*

5.9利用ansible远程执行各类脚本

5.10先将脚本分发到各个机器上去

[[email protected] ~]# echo "echo ‘测试成功!‘" >>/server/scripts/test.sh

ansible zhaokai -m copy -a"src=/server/scripts/yum.sh dest=/server/scripts/ mode=0755backup=yes"

注意:dest路径的写法,若是不存在的目录,结尾要加斜线(/server/scripts/),否则默认不会创建目标目录

5.11远程批量执行脚本

ansible zhaokai -m shell -a"/server/scripts/yum.sh"

示例:

[[email protected] ~]# ansible zhaokai -m command -a "sh/server/scripts/test.sh"

172.16.1.41 | SUCCESS | rc=0 >>

测试成功!

 

172.16.1.31 | SUCCESS | rc=0 >>

测试成功!

 

172.16.1.7 | SUCCESS | rc=0 >>

测试成功!

 

172.16.1.8 | SUCCESS | rc=0 >>

测试成功!

 

172.16.1.61 | SUCCESS | rc=0 >>

测试成功!

5.12 常用模块:每个模块就是一个功能


模块名


作用


command


执行命令模块(重要)


copy


文件拷贝模块(重要)


shell


执行shell脚本模块(重要)


script


执行shell脚本模块(重要)


file


设定文件属性模块


service


系统服务管理模块


cron


计划任务管理模块


yum


yum软件包安装管理模块


synchronize


使用rsync同步文件模块

第6章 ansible剧本开始

绝对路径:进入目录执行一次,下一次如果还需要进入这个目录,需要再次用绝对路径进入执行命令。

执行剧本的另一台机器,如果在挂载中,需要检查挂载,卸载,不然不执行卡主。

6.1 pyYAML语法规则:

6.2      规则一:缩进

yaml使用一个固定的缩进风格表示数据层结构关系,Saltstack/ansible需要每个缩进级别由

两个空格组成。一定不能使用tab键

6.3     规则二:冒号

yaml:

mykey: my_value

每个冒号后面一定要有一个空格(以冒号结尾不需要空格,表示文件路径的模版可以不需要空

格)

6.4     规则三:短横线

想要表示列表项,使用一个短横杠加一个空格。多个项使用同样的缩进级别作为同一个列表的

一部分 - hosts

6.5 ☆核心规则:有效的利用空格进行剧本的编写,剧本编写是不支持tab的

---

### 剧本的开头,可以不写

hosts: all         <- 处理所有服务器,找到所有服务器;  -(空格)hosts:(空格)all

tasks:              <- 剧本所要干的事情;               (空格)(空格)task:

- command: echo hello oldboy linux.                  (空格)(空格)空格)(空格)-(

空格)模块名称:(空格)模块中对应的功能

6.6 剧本编写内容扩展:剧本任务定义名称

- hosts:172.16.1.7 <- 处理指定服务器                   -(空格)hosts:(空格)

tasks:                <- 剧本所要干的事情;               (空格)(空格)task:

- name:

command: echo hello oldboy linux.                  (空格)(空格)空格)(空格)-(

空格)模块名称:(空格)模块中对应的功能

6.7     剧本编写内容扩展:剧本任务编写定时任务

# ansible all -m cron -a "name=‘restartnetwork‘ minute=00 hour=00

#job=‘/usr/sbin/ntpdate time.nist.gov>/dev/null 2>&1‘"

-hosts: all

tasks:

-name: restart-network

cron: name=‘restart network‘ minute=00 hour=00 job=‘/usr/sbin/ntpdate

time.nist.gov >/dev/null 2>&1‘

#ansible-playbook -C /etc/ansible/network-restart.yml  -vvvx

说明:测试剧本命令后面可以跟多个-v进行调试检查

6.8      剧本编写内容扩展:剧本任务编写多个任务

-hosts: all

tasks:

-name: restart-network

cron: name=‘restart network‘ minute=00 hour=00 job=‘/usr/sbin/ntpdate

time.nist.gov >/dev/null 2>&1‘

-name: sync time

cron: name=‘sync time‘ minute=*/5 job="/usr/sbin/ntpdatepool.ntp.com >/dev/null 2>&1"

6.9      剧本编写内容扩展:剧本任务编写多个主机

-hosts: 172.16.1.7

tasks:

-name: restart-network

cron: name=‘restart network‘ minute=00 hour=00 job=‘/usr/sbin/ntpdate

time.nist.gov >/dev/null 2>&1‘

-name: sync time

cron: name=‘sync time‘ minute=*/5 job="/usr/sbin/ntpdatepool.ntp.com

>/dev/null 2>&1"

-hosts: 172.16.1.31

tasks:

-name: show ip addr to file

shell: echo $(hostname -i) >> /tmp/ip.txt

第7章 常用模块

ansible oldboy -m authorized_key -a "key=‘公钥文件里面的内容,锁头里面的内容‘  user=root" -k

#实战操作

[[email protected] .ssh]# ansible 172.16.1.41 -mauthorized_key -a "key=‘ssh-dss AAAAB3NzaC1kc3MAAACBAOkVRb7MpNPcYR6HbR5Q6iT2028sSgNlaKX8yXEHDp/YGuobBzYvHKvLMhokak4Eo2DE/g9n29z+J4krWGpWZz9680YaT8T8Z0qmMXorK44FuAQqcifoyvMlW97DPvF+H8ilYNHnSE1D2EY4TXU1ruNPGAeaqLaUr6xcP7enc+hVAAAAFQCv0mTqYI6uraAAwV+YqV0fwynuSwAAAIEA54se+MAC8WxsugYsVEkvCnSWhAhB/KLsBCk5k7Y8pTdirnJ/ZviXM2/GTsPYdMHw9cZFyT4L3lsflorcj9gjsavWiyK9/GDerBe1vXg6JyRXstgWax2hIpH702dzSuENXSlbTua1tGNdBGt2A+mKQouBKqGMgyz3SWoF3CEb0gkAAACBAIUnpl1V9+w4tgccRoVUcnRx7H3hkaVSGzFXz1KxNGyASWVtgBdDn9+VT4T+U9JE9hlwKx4s9ySRyYvivZnT/6kZODleFVvVckr8jEdV/ILlesu+w[email protected]m01‘  user=root" -k

SSH password:

时间: 2024-10-10 15:34:43

ansible自动化运维必备工具详解的相关文章

Ansible自动化运维之Playbook详解及体验(二)

Handlers介绍: Handlers也是一些task的列表,和一般的task并没有什么区别.是由通知者进行的notify,如果没有被notify,则Handlers不会执行,假如被notify了,则Handlers被执行: 不管有多少个通知者进行了notify,等到play中的所有task执行完成之后,handlers也只会被执行一次 "notify"这个action可用于在每个play的最后被触发,这样可以避免多次有改变发生时每次都执行指定的操作,取而代之,仅在所有的变化发生完成

自动化运维之paramiko详解

  一.paramiko介绍 paramiko是基于Python实现的SSH2远程安全连接,支持认证及密钥方式.可以实现远程命令执行.文件传输.中间SSH代理等功能,相对于Pexpect,封装的层次更高,更贴近SSH协议的功能 官网地址:http://www.paramiko.org/installing.html   http://docs.paramiko.org/en/2.4/   https://pypi.org/project/paramiko/ 二.paramiko安装 [email

Ansible自动化运维工具-上

[Ansible特点] 1)Ansible与saltstack均是基于Python语言开发的 2)安装使用简单,基于不同插件和模块实现各种软件,平台,版本的管理以及支持虚拟容器多层级的部署 3)不需要安装客户端,ansible基于SSH远程管理,不需要为配置工作添加额外的支持: PS:很多认为Ansible工具执行效率慢,其原因是SSH服务慢,我们可以选择优化SSH连接速度以及Ansible加速模块 [Ansible自动化管理工具特点] #轻量级,更新时,需要在操作机上进行一次更新即可 #采用S

简单聊一聊Ansible自动化运维

一.Ansible概述 Ansible是今年来越来越火的一款开源运维自动化工具,通过Ansible可以实现运维自动化,提高运维工程师的工作效率,减少人为失误.Ansible通过本身集成的非常丰富的模块可以实现各种管理任务,其自带模块超过上千个.更为重要的是,它操作非常简单,即使小白也可以轻松上手,但它提供的功能又非常丰富,在运维领域,几乎可以做任何事. 1.Ansible特点 Ansible自2012年发布以来,很快在全球流行,其特点如下: Ansible基于Python开发,运维工程师对其二次

Ansible自动化运维(一)

一.ansible自动化运维 二.ansible安装 1.基本软件安装 (1)安装python-2.7.8 cd python-2.7.8 ./configure --prefix=/usr/local && make && make install #如果ansible找不到python头文件的话,将Pytho头文件复制到标准目录 cp -a /usr/local/include/python2.7/* /usr/local/include #修改/usr/bin/yum

ansible自动化运维工具使用详解

一.ansible简介 1.ansible ansible是新出现的自动化运维工具,基于Python研发.糅合了众多老牌运维工具的优点实现了批量操作系统配置.批量程序的部署.批量运行命令等功能.仅需在管理工作站上安装ansible程序配置被管控主机的IP信息,被管控的主机无客户端.ansible应用程序存在于epel(第三方社区)源,依赖于很多python组件 参考站点:http://www.ansible.com.cn 2.ansible特性 模块化设计,调用特定的模块来完成特定任务,本身是核

Ansible自动化运维的安装及常用模块详解

Ansible作为今年来越来越火的一款开源运维自动化工具,通过Ansible可以实现运维自动化,提高运维工程师的工作效率,减少人为失误.Ansible通过本身集成的非常丰富的模块可以实现各种管理任务,其自带模块超过上千个.更为重要的是,它操作简单,但提供的功能又非常丰富,在运维领域,几乎可以做任何事..Ansible自2012年发布以来,很快在全球流行,其特点如下: 1.Ansible基于Python开发,运维工程师对其二次开发相对比较容易2.Ansible丰富的内置模块,几乎可以满足一切要求3

Ansible自动化运维详解

Ansible作为今年来越来越火的一款开源运维自动化工具,通过Ansible可以实现运维自动化,提高运维工程师的工作效率,减少人为失误.Ansible通过本身集成的非常丰富的模块可以实现各种管理任务,其自带模块超过上千个.更为重要的是,它操作简单,但提供的功能又非常丰富,在运维领域,几乎可以做任何事..Ansible自2012年发布以来,很快在全球流行,其特点如下: 1.Ansible基于Python开发,运维工程师对其二次开发相对比较容易2.Ansible丰富的内置模块,几乎可以满足一切要求3

Linux中ansible自动化运维工具

1.ansible简介ansible是一款自动化运维工具,基于Python开发,集合了众多运维工具(puppet,cfengine,chef,func,fabric)的优点,实现了批量系统配置,批量 程序部署,批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.主要包括:(1)连接插件connection plugins:负责和被监控端实现通信:(2)host inventory:指定操作的主