1.ansible的安装方式

1.1使用yum源安装

yum install ansible -y 

1.2使用rpm包安装

https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

2.主机认证

2.1主机分配

  采用2台主机做测试环境

主控制端 192.168.152.129
被控制端 192.168.152.130

2.2单向主机认证

ssh-keygen -t rsa -f ~/.ssh/id_rsa -N "" -q
ssh-copy-id -i /root/.ssh/id_dsa.pub root@192.168.152.130

2.3使用expect  

expect工具实现非交互式的ssh-copy-id,避免每次都询问登陆主机的用户和密码

同时也可以使用,ansible自带的批量添加秘钥模块,批量的分发到控制端节点,authorized_key模块即可完成,详见介绍常用的ansible的模块。

# 安装expect
[root@server1 ~]# yum -y install expect # expect脚本
[root@server1 ~]# cat auto_sshcopyid.expect
#!/usr/bin/expect set timeout 10
set user_hostname [lindex $argv 0]
set password [lindex $argv 1] spawn ssh-copy-id $user_hostname
expect {
"(yes/no)?"
{
send "yes\n"
expect "*password: " { send "$password\n" }
}
"*password: " { send "$password\n" }
} expect eof # 批量调用expect的shell脚本
[root@server1 ~]# cat sshkey.sh
#!/bin/bash ip=`echo -n "$(seq -s "," 131 134),150" | xargs -d "," -i echo 192.168.152.{}`
password="123456"
#user_host=`awk '{print $3}' /root/.ssh/id_rsa.pub` for i in $ip;do
/root/auto_sshcopyid.expect root@$i $password &>>/tmp/a.log
ssh root@$i "echo $i sure "
done # 执行shell脚本配置互信
[root@server1 ~]# chmod +x /root/{sshkey.sh,auto_sshcopyid.expect}
[root@server1 ~]# ./sshkey.sh

  

3.主要配置文件

/etc/ansible/ansible.cfg       #主配置文件,配置ansible工作特性
/etc/ansible/hosts #主机清单文件
/etc/ansible/rules #角色目录 /etc/ansible/ansible.cfg 配置文件简单介绍:
[defaults]
# some basic default values...
#inventory = /etc/ansible/hosts #host的主机清单
#library = /usr/share/my_modules/ #模块目录
#module_utils = /usr/share/my_module_utils/ #模块目录
#remote_tmp = ~/.ansible/tmp # tmp远端临时存放的目录 ,命令执行完目录下生成的脚本删除
#local_tmp = ~/.ansible/tmp #主控端执行命令的时候,把命令脚本存放,发送到被控制端的零时存放,执行完删除
#forks = 5 #指定进程为5
#poll_interval = 15 #拉取数据间隔时间
#sudo_user = root #主控端执行命令的时候非root身份,需要切换以什么用户身份执行命令
#ask_sudo_pass = True
#ask_pass = True
#transport = smart
#remote_port = 22 #默认端口号
#module_lang = C
#module_set_locale = False
####
#host_key_checking = False #检查对应服务器的host_key ,建议取消注释(不检查第一次连接主机的时候 输入yes)
#log_path=/var/log/ansible.log #日志文件存放路径
#roles_path = /etc/ansible/roles:/usr/share/ansible/roles #roles相关 程序文件:
/usr/bin/ansible #主程序,临时命令执行工具
/usr/bin/ansible-doc #查看配置文档,模块功能查看工具
  -a   #列出所有模块的文档
  -l,--list   #列出可以用的模块
  -s,--snippet   #显示指定模块的playbook片段(显示简单的使用方法)
/usr/bin/ansible-galaxy #下载/上传优秀代码或Roles模块的官网平台
/usr/bin/ansible-playbook #定制自动化任务,编排剧本工具/usr/bin/ansible-pull 远程执行命令的工具:
/usr/bin/ansible-vault #文件加密工具
/usr/bin/ansible-console #基于Console界面与用户交互的执行工具

4.ansible的语法结构

功能:通过ssh实现配置管理、应用部署、任务执行等功能

语法:
ansible <host-pattern> [options]
ansible <host-pattern> [-m module_name] [-a args]
ansible 主机清单 -m 模块 -a 模块参数(命令) [-o单行显示]
常用选项:
-m :模块
-a :模块选项
-o :结果单行显示
-u :主机的用户名
-k :密码询问方式
-i :自定义主机清单文件
–version 显示版本ansible的版本号
-v 详细过程 –vv -vvv更详细
–list-hosts 显示主机列表,可简写--list
-k, –ask-pass 没有做密码密钥认证的时候,需要加,提示连接密码,默认Key验证
-K, –ask-become-pass 远端执行命令的时候是以谁的用户身份执行,要输入谁的密码
-C, –check 检查,并不执行
-T, –timeout=TIMEOUT 执行命令的超时时间,默认10s
-u, –user=REMOTE_USER 远端执行命令的时候是以谁的用户身份执行,
-b, –become 代替旧版的sudo 切换 root时候或者其他用户的时候使用    -B, 异步运行,并在多少秒后,超时就停止运行 例如 -B 200 ;默认是同步,保持长连接,等待让所有任务完成返回结果。
-P, 异步运行间隔时间 默认15秒
-t, 执行及结果输出到目录,目录名为host的主机名作为目录名,也可做重定向使用
  
   --syntax-check, 检查playbook的语法,不执行语句内容

  

4.1特殊的表达式

支持正则表达式:

 *  支持通配符
示例:
ansible “*” -m ping
ansible 192.168.152.* -m ping
ansible “*srvs” -m ping 与:交集关系
示例:
ansible “web:&db” -m ping 或:
示例:
ansible “websrvs:dbsrvs” -m ping
ansible “192.168.152.130:192.168.152.131” -m ping 非:
ansible ‘websrvs:!dbsrvs’ -m ping 在websrvs组,但不在dbsrvs组中的主机 正则表达式:
ansible “~(web|db).*\.liych\.com” -m ping

5.Inventory主机配置清单格式

  用于定义ansible要管理的主机列表,可以定义单个主机和主机组,通常用于定义要管理主机的认证信息,例如ssh登录用户名,密码等相关,主机配置文件在/etc/ansible/hosts就是默认的inventory。

  使用是需要定义主机清单,inventory常用的定义规则如下:

cat -n /etc/ansible/hosts

1)定义主机组方式
[webservers] #一个组名
192.168.152.131 #组内主机
192.168.152.132 2)批量定义主机
[webservers]
192.168.152.[131:134] #【可以指定范围】 一般为顺序可连代表着.131,132,133,134 3)域名批量定制
[websrvs]
www[01:100].example.com #同上
[dbsrvs]
db-[a:f].example.com #同上 4)内置参数:用户名和密码,ssh端口;命令行不用输入-u和-k选项 在主机清单内设置密码可见
[webservers]
192.168.152.[131:132] ansible_ssh_user='root' ansible_ssh_pass='123456' ansible_ssh_port='22'
ansible_ssh_user #当前主机的用户
ansible_ssh_pass #当前主机的密码 5)vars变量 :定义主机的内置参数
webservers]
192.168.152.[131:132]
[webservers:vars] #可以设置一组,生效于多个主机
ansible_ssh_user='root'
ansible_ssh_pass='123456'
ansible_ssh_port='22' 6)子组分类变量:children
[nginx]
192.168.152.131
[apache]
192.168.152.132
[webservers:children]
apache
nginx
[webservers:vars]
ansible_ssh_user='root'
ansible_ssh_pass='123456'
ansible_ssh_port='22' #以上表示定义2个组,然后把2个小组加到一个大组内(webservers) ,同时为大组内的小组建立通用的通信账户信息。

  

简单命令执行,验证是可以通信使用的。

ping测试使用:

创建目录文件:

6.命令的执行过程:

1. 首先读主配置文件并加载 默认/etc/ansible/ansible.cfg

2.获取主机列表加载自己对应的模块文件,如command等

3.通过ansible将模块或命令生成对应的临时py文件,并将该文件传输至远程服务器的对应执行用户$HOME/.ansible/tmp/ansible-tmp-数字/XXX.PY文件

4.给该文件传输至远程服务器文件+x执行权限

5.主控制端执行并返回结果,输出到屏幕

6.删除临时远端的py临时文件,sleep 0退出

6.1返回结果颜色说明:

绿色:执行成功

黄色:执行成功并且对目标主机做过修改,例如创建文件后,在同目录下创建目录的话,返回黄色,如上图。

红色:执行失败

紫色:提示警告

下篇文章预告:介绍常用的ansible的模块。

Ansible安装部署和常用命令,及其主机清单inventory(二)的更多相关文章

  1. Ansible安装部署以及常用模块详解

    一.  Ansible 介绍Ansible是一个配置管理系统configuration management system, python 语言是运维人员必须会的语言, ansible 是一个基于py ...

  2. Ansible安装部署及常用模块详解

    Ansible命令使用 Ansible语法使用ansible <pattern_goes_here> -m <module_name> -a <arguments> ...

  3. ansible环境部署及常用模块总结 - 运维笔记

    一.  Ansible 介绍Ansible是一个配置管理系统configuration management system, python 语言是运维人员必须会的语言, ansible 是一个基于py ...

  4. Ansible安装部署

    Ansible安装部署 Ansible是一种集成IT系统的配置管理, 应用部署, 执行特定任务的开源平台. 它基于Python语言实现, 部署只需在主控端部署Ansible环境, 被控端无需安装代理工 ...

  5. 第1天:Ansible安装部署

    Ansible介绍 Ansible是一个简单的自动化引擎,可完成配置管理.应用部署.服务编排以及各种IT需求.它是一款使用Python语言开发实现的开源软件,其依赖Jinjia2.paramiko和P ...

  6. Linux系统Vi/Vim编辑器的简单介绍、安装/卸载、常用命令

    Linux系统Vi/Vim编辑器的简单介绍.安装/卸载.常用命令 1.介绍 vi(Visual Interface)编辑器是Linux和Unix上最基本的文本编辑器,工作在字符模式下.由于不需要图形界 ...

  7. linux下安装nginx以及常用命令指南

    安装nginx之前,要先在服务器上安装nginx运行所需要的依赖包 目录选择:一般选择 "/usr/local/" 1.安装PCRE库 离线安装包:https://pan.baid ...

  8. (Linux环境Kafka集群安装配置及常用命令

    Linux环境Kafka集群安装配置及常用命令 Kafka 消息队列内部实现原理 Kafka架构 一.下载Kafka安装包 二.Kafka安装包的解压 三.设置环境变量 四.配置kafka文件 4.1 ...

  9. Ansible主机清单Inventory文件hosts

    Ansible主机清单Inventory文件hosts 发表于 2017-05-14 | 分类于 运维相关 , Ansible | | 阅读次数 4638 | 字数统计 1,442 | 阅读时长预计 ...

随机推荐

  1. [笔记] 基于nvidia/cuda的深度学习基础镜像构建流程 V0.2

    之前的[笔记] 基于nvidia/cuda的深度学习基础镜像构建流程已经Out了,以这篇为准. 基于NVidia官方的nvidia/cuda image,构建适用于Deep Learning的基础im ...

  2. springboot集成springcloud,启动时报错java.lang.AbstractMethodError: null

    出现这个问题是springboot和springcloud的版本不匹配. 我此处使用了springboot 2.0.4.RELEASE,springcloud 使用了Finchley.SR2. 修改方 ...

  3. 认识一下 Kafka

    Kafka 基本概述 什么是 Kafka Kafka 是一个分布式流式平台,它有三个关键能力 订阅发布记录流,它类似于企业中的消息队列 或 企业消息传递系统 以容错的方式存储记录流 实时记录流 Kaf ...

  4. 我想学前端动画-CSS之transition

    Transition属性: 属性 描述 CSS transition 简写属性,用于在一个属性中设置四个过渡属性. 3 transition-property 规定应用过渡的 CSS 属性的名称.默认 ...

  5. FastAdmin-T

    FastAdmin 注意食用姿势,建议先通读官方文档一次,在看 根据环境及配置的不同,仅作参考 修改mysql表注释ALTER TABLE student COMMENT '学生表'; fastadm ...

  6. 面试题 :10亿url去重只给4G内存

    我能想到的有以下几种: 用语言判断去重,ex表格去重,数据库去重,文件名字去重, 有人说:10亿url ex表放不下!! 可以用树和折半的思想将10亿url,变成单元最小化的树,然后用ex表去重 ex ...

  7. JVM配置参数解析

    1.参数说明(部分,待完善) -Xms128M:JVM初始分配的堆内存 -Xmx256M:JVM最大允许分配的堆内存,按需分配 -XX:PermSize=64M: JVM初始分配的非堆内存 -XX:M ...

  8. VirtualBox下Centos6.8网络配置

    win10环境下,VirtualBox和Centos6.8已经按照完毕,下面配置Centos6.8网络. 1.设置VirtualBox为桥接模式,具体的有三种联网方法,我们参考http://www.c ...

  9. Array js扩展方法 forEach()

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. win10安装tensorflow (cpu版)

    前提: 下载anaconda,然后创建一个python虚拟环境: 命令: conda create -n tf_cpu python=3.6       # (tf_cpu  是这个虚拟环境的名字) ...