1 ansible基础知识部分补充

1.1 ansible软件特点:

· 可以实现批量管理

· 可以实现批量部署

· ad-hoc(批量执行命令)---针对临时性的操作

  ansible clsn -m command -a "hostname"   <- 批量执行命令举例

· 编写剧本-脚本(playbook)---针对重复性的操作

1.2 ansible核心功能:

pyYAML-----用于ansible编写剧本所使用的语言格式(saltstack---python)

rsync-ini语法  sersync-xml语法  ansible-pyYAML语法

paramiko---远程连接与数据传输

Jinja2-----用于编写ansible的模板信息

2 ansible剧本编写规则说明

2.1 pyYAML语法规则:

规则一:缩进

yaml使用一个固定的缩进风格表示数据层结构关系,Saltstack需要每个缩进级别由两个空格组成。一定不能使用tab键

注意:编写yaml文件,就忘记键盘有tab

规则二:冒号

CMD="echo"

yaml:

mykey:

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

规则三:短横线

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

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

3 剧本书写格式

### 剧本的开头,可以不写
- hosts: all <- 处理所有服务器,找到所有服务器; -(空格)hosts:(空格)all
tasks: <- 剧本所要干的事情; (空格)(空格)task:
- command: echo hello clsn linux.
(空格)(空格)空格)(空格)-(空格)模块名称:(空格)模块中对应的功能
ansible all -m command -a "echo hello clsn linux"     

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

- hosts: 172.16.1.7  <- 处理指定服务器                   -(空格)hosts:(空格)all
task: <- 剧本所要干的事情; (空格)(空格)task:
- name:
command: echo hello clsn linux.
(空格)(空格)空格)(空格)-(空格)模块名称:(空格)模块中对应的功能

3.1 剧本格式示例

[root@m01 ansible-playbook]# vim rsync_sever.yml
- hosts: 172.16.1.41
tasks:
- name: install rsync
yum: name=rsync state=installed

4 剧本编写后检查方法

01:ansible-playbook --syntax-check 01.yml

   --- 进行剧本配置信息语法检查

02:ansible-playbook -C 01.yml

    --- 模拟剧本执行(彩排)

4.1 语法检查

[root@m01 ansible-playbook]# ansible-playbook --syntax-check 01.yml
playbook: 01.yml

4.2 模拟剧本执行

[root@m01 ansible-playbook]# ansible-playbook -C 01.yml
PLAY [all] **************************************************************** TASK [Gathering Facts] ****************************************************
ok: [172.16.1.41]
ok: [172.16.1.8]
ok: [172.16.1.31] TASK [cron] ***************************************************************
ok: [172.16.1.8]
ok: [172.16.1.41]
ok: [172.16.1.31] PLAY RECAP ****************************************************************
172.16.1.31 : ok=2 changed=0 unreachable=0 failed=0
172.16.1.41 : ok=2 changed=0 unreachable=0 failed=0
172.16.1.8 : ok=2 changed=0 unreachable=0 failed=0

5 剧本示例

5.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'
- name: sync time
cron: name='sync time' minute=*/5 job="/usr/sbin/ntpdate pool.ntp.com >/dev/null 2>&1"

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

- 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/ntpdate pool.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

6 剧本编写方式

01 多主机单任务编写方式

02 多主机多任务编写方式

03 不同主机多任务编写方式

常见错误

1 ansible编写剧本排错思路

1. ansible-playbook编写完,检査语法和模拟测试运行

2. 打开剧本,定位异常问題原因,将剧本中的内容转换命令执行一次

1
2
cron: name=clsn64 minute=ee hour=03 job='/bin/sh /server/scripts/test.sh &>/dev/null'
ansible clsn -m cron -a "name=clsn64 minute=00 hour=03 job='/bin/sh /server/scripts/test.sh &>/dev/null
 

3. 将参数中的脚本文件推送到远程屎务器,在远程服务器本地执行脚本 sh -x test.sh

说明:ansible执行时,加1上-vvvv显示ansible详细执行过程,也可以定位异常原因!

1.1 排错逻辑

01. 剧本执行中的错误

02. 把剧本中的内容转换为ansible命令执行

ansible clsn -m yum -a "name=rsync state=installed"

03. 把ansible服务器上执行的命令放在被管理主机上执行

yum install -y rsync

2 ansible 无法正常使用

2.1 在被控端上 root@notty 进程一直存在

[root@backup ~]# ps -ef|grep sshd
root 35274 1 0 15:25 ? 00:00:00 /usr/sbin/sshd
root 37004 35274 0 16:23 ? 00:00:00 sshd: root@pts/2
root 37062 35274 0 16:55 ? 00:00:00 sshd: root@notty
root 37154 37006 0 16:55 pts/2 00:00:00 grep --color=auto sshd

2.2 解决办法

首先,将该进程干掉

kill pid

2.3 然后使用ansible的 -vvvv 参数查看执行的错误信息

Loading callback plugin minimal of type stdout, v2.0 from /usr/lib/python2.6/site-packages/ansible/plugins/callback/__init__.pyc
META: ran handlers
Using module file /usr/lib/python2.6/site-packages/ansible/modules/system/ping.py
<172.16.1.8> ESTABLISH SSH CONNECTION FOR USER: None
<172.16.1.8> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/923ebeb605 172.16.1.8 '/bin/sh -c '"'"'echo ~ && sleep 0'"'"''
……

找到在哪里出错。

2.4 可能的错误

在 /etc/ssh/sshd_config 文件中的第132行为空,导致sftp 无法连接,出错~

1
133 Subsystem       sftp    /usr/libexec/openssh/sftp-server

3 常见问题二:

1
2
3
[root@m01 ~]# ansible  -k 172.16.1.51 -m ping
SSH password:
[WARNING]: No hosts matched, nothing to do

原因分析:

在ansible的hosts文件中,没有配置相应主机地址信息

3.1 常见问题三:

1
2
3
4
5
6
# ansible -k 172.16.1.51 -m ping
SSH password:
172.16.1.51|FAILED! => {
"failed"true,
"msg""Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this.  Please add this host's fingerprint to your known_hosts file to manage this host."
}

原因分析:

因为没有受控端的指纹信息,在known_hosts文件中

转载博文链接:https://www.cnblogs.com/clsn/p/7743792.html#auto_id_69

ansible-palybook剧本的更多相关文章

  1. ansible的剧本

    ansible的playbook的介绍-yaml ansible的playbook是使用yaml语言写的 YAML标记语言介绍YAML是一个可读性高的用来表达资料序列的格式.YAML参考了其他多种语言 ...

  2. Ansible yaml 剧本(傻瓜式)

    优化ansible安装MySQL: Ansible部署MySQL编译安装 - xiao智 - 博客园 (cnblogs.com) Ansible yaml 剧本(傻瓜式): --- - hosts: ...

  3. 2.Ansible Playbook剧本

    1.playbook?playbook翻译过来就是"剧本",那playbook组成如下 play: 定义的是主机的角色 task: 定义的是具体执行的任务 playbook: 由一 ...

  4. ansible的剧本play(四)

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA68AAAETCAYAAADZDzDOAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjw

  5. ansible批量管理软件部署及剧本

    服务器版本信息: Centos6.9 [root@db02 ~]# uname -a Linux db02 -.el6.x86_64 # SMP Tue Mar :: UTC x86_64 x86_6 ...

  6. ansible服务及剧本编写

    第1章 ansible软件概念说明 python语言是运维人员必会的语言,而ansible是一个基于Python开发的自动化运维工具 (saltstack).其功能实现基于SSH远程连接服务:ansi ...

  7. ansible 剧本

    ansible的管理与剧本   首先我们安装一个ansible. 在7版本,直接用yum安装就可以 yum -y install ansible 然后清空ansible的配置文件,在里面写入自己需要管 ...

  8. ansible的管理与剧本

    首先我们安装一个ansible. 在7版本,直接用yum安装就可以 yum -y install ansible 然后清空ansible的配置文件,在里面写入自己需要管理的服务器的ip和相应的登陆密码 ...

  9. Linux中ansible批量管理软件部署及剧本编写

    服务器版本信息: Centos6.9 [root@db02 ~]# uname -a Linux db02 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29: ...

  10. 剧本--ansible

    剧本不喜欢, 1.1 编写剧本规范:(PYyaml语法格式文件) 剧本中有层级划分 每个层级都要用两个空格进行区分 第一级标题 第二级标题 第三级标题 强调注意:一定使用ansible软件配置剧本时, ...

随机推荐

  1. python 爬虫初试

    python3.5  抓网易新闻的排行榜上的新闻,主要用自带的request模块和lxml import re from urllib import request from lxml import ...

  2. Notes about Vue Style Guide

    A. Necessary Multiple-word for component’s name Data for component must be a function The definition ...

  3. CRM——讲师与学生

    一.课程记录和学习记录 1.初始化 course_record, study_record.2.学习记录3.录入成绩4.显示成绩 ajax 查询 柱状图展示成绩 highcharts 5.上传作业(o ...

  4. Java NIO(三) Buffer

    Java NIO中的Buffer用于和NIO通道进行交互.如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的. 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存.这块内存被包装成NIO ...

  5. 服务器ipmi远程管理

    DELL iDRAC (Integrated Dell™ Remote Access Controller )是 Dell PowerEdge 系列服务器上的远程管理方案, 11代 12代服务器已经集 ...

  6. sqlserver 带输出参数的存储过程

    --创建存储过程create procedure proc_stu@sname varchar(20),@pwd varchar(50),@flag bit outputasif exists(sel ...

  7. Linux中基于apache httpd的svn服务器搭建与配置

    mod_dav_svn是apache连接svn的模块 yum install subversion mod_dav_svn httpd 配置文件简单说明, SVNParentPath 说明可以在指定的 ...

  8. 别跑了,看看脚下有木有money

       别跑了,看看脚下有木有money 1.长大论坛   本来是想做个博客的,无奈级别不够,博客过于复杂,所以就做了这个类似于贴吧的东西.在这里,你可以发帖:可以吐槽学校.可以向他人寻求帮助.甚至可以 ...

  9. 怎样在linux下编写C程序并编译执行

    一.Hello, world! 在linux下输入:(以hello.c为例)首先选中文件要保存的路径(如:cd work)vi hello.c(要编辑的文件名) 输入程序:# include<s ...

  10. C++11之std::future和std::promise和std::std::packaged_task

    为什么C++11引入std::future和std::promise?C++11创建了线程以后,我们不能直接从thread.join()得到结果,必须定义一个变量,在线程执行时,对这个变量赋值,然后执 ...