一篇带你快速入门ansible和使用

在这里插入图片描述

#基本概述

ansible是一款开源自动化工具,基于python paramiko模块开发,分布式,无需客户端
官网网址:https://www.ansible.com
官方文档:https://docs.ansible.com/ansible/latest/user_guide/become.html

#应用场景

批量执行和分发任务
#如:同时在1000台服务器上安装apache服务,并在安装后启动服务
#如:将某一个文件一次性拷贝到1000台服务器上

#特点

部署简单,只需要在ansible控制端部署
默认使用SSH协议进行管理
主从集中化管理
配置简单,扩展性强
支持API及自定义模块,可通过python扩展
通过playbooks剧本来定制强大的配置

#架构图
在这里插入图片描述

#安装

#1.设置epel仓库(ansible仓库默认不在yum仓库中,所以要启用epel仓库)
yum install epel-release -y

#2.使用yum进行安装
yum install ansible -y

#3.查看版本
Ansible --version

#ansible命令参数

ansible - Define and run a single task 'playbook' against a set of hosts 
#针对一组主机定义并运行单个任务“剧本”
ansible命令语法:ansible [-i:主机文件] [-f:批次] [组名] [-m 模块名称] [-a:模块参数]

#ansible常用参数

 -v,–verbose               #  详细模式,如果命令执行成功,输出详细的结果 (-vv –vvv -vvvv)
 -i PATH, -inventory=PATH  #  指定 host 文件的路径,默认是在 /etc/ansible/hosts 
inventory  [ˈɪnvəntri]  库存
 -f NUM,-forks=NUM       # NUM 是指定一个整数,默认是 5 ,指定 fork 开启同步进程的个数。
 -m NAME,-module-name=NAM    #   指定使用的 module 名称,默认使用 command模块
 -a,MODULE_ARGS              #指定 module 模块的参数
 -k,-ask-pass                #提示输入 ssh 的密码,而不是使用基于 ssh 的密钥认证
 -sudo                       # 指定使用 sudo 获得 root 权限
 -K,-ask-sudo-pass           #提示输入 sudo 密码,与 -sudo 一起使用
 -u USERNAME,-user=USERNAME  # 指定移动端的执行用户
 -C,–check                   #测试此命令执行会改变什么内容,不会真正的去执行

#ansible查看帮助

ansible-doc -l           #列出所有的模块列表
ansible-doc -s 模块名    #查看指定模块的参数
ansible-doc 模块名 #查看指定模块的详细参数
#示例:ansible-doc yum | ansible-dco firewalld

#基本使用

#实验拓扑图
在这里插入图片描述

一:定义主机清单(有两种方式:一种基于端口,用户名密码,一种基于SSH密钥)

1、基于端口、用户名、密码定义清单

格式:ansible_ssh_port:指定ssh端口  ansible_ssh_user:指定用户  ansible_ssh_pass:指定密码 ssh_sudo_pass:指明sudo时候的密码

2、基于SSH密钥来访问定义清单

在ansible服务端生成秘钥,并且复制公钥到节点中
#ssh-keygen  一直回车
#一键生成
  ssh-keygen -f ~/.ssh/id_rsa -P '' -q
​
使用ssh-copy-id命令复制ansible公钥到节点
  ssh-copy-id  root@192.168.186.142
​
#使用sshpass批量分发密钥到服务器
[root@game scripts]# cat scp_isa.sh 
#!/bin/bash
ip=(130 131 132 133)
for i in ${ip[@]}
do
    sshpass -p"Skills39" ssh-copy-id -i /root/.ssh/id_rsa.pub "-o StrictHostKeyChecking=no" root@192.168.228.$i 
done#服务端查看效果
[root@game ~]# cat /root/.ssh/known_hosts 
192.168.228.130 ecdsa-sha2-nistp256 AAAAE2VjZHNhL.....AuHi+n9iVPC0Of9D/MKK8lWuGHg=
192.168.228.131 ecdsa-sha2-nistp256 AAAAE2VjZHNh...d8FX4mqoYCp43E2knM9t8YAZGg/k08=
192.168.228.132 ecdsa-sha2-nistp256 AAAAE2VjZHNhL....y6U2tCs+SU/Sg+rGR8E76lqC316Q=
192.168.228.133 ecdsa-sha2-nistp256 AAAAE2....iTuiJ+0VNOYrhh2gqW36XJVlW1+p6pj2dbo=#服务端测试面密钥登录
ssh 192.168.228.130
​
#配置清单
#/etc/ansible/hosts
  [db-server]
  192.168.186.142
  192.168.186.135
#网段范围写法
  [all]
  192.168.228.[130:133]
    
#如果写主机名,需要在/etc/hosts里面写
  [a]
  k8s-master
#/etc/hosts
[root@game ~]# cat /etc/hosts
192.168.228.130 k8s-master

二:在ansible服务端运行命令

#提示:
#首次运行如果不进行什么修改的话会提出警告,可以按照将deprecation改为False
[DEPRECATION WARNING]: The TRANSFORM_INVALID_GROUP_CHARS settings is set to allow bad characters in group names by default, 
this will change, but still be user configurable on deprecation. This feature will be removed in version 2.10. Deprecation 
warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
#[root@k8s-master ~]# vim /etc/ansible/ansible.cfg
deprecation_warnings=False

1、使用ping检查k8s-node节点机器的连通性

[root@k8s-master ~]# ansible k8s-node -m ping
#提示:也可以指定hosts文件,但是默认就是读取那个文件,所以不指定也是可以的
# ansible -i /etc/ansible/hosts k8s-node -m ping
192.168.86.133 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
192.168.86.132 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}

2、检查ansible节点的运行时间

[root@k8s-master ~]# ansible k8s-node -m command -a 'uptime'
192.168.86.133 | CHANGED | rc=0 >>
 23:16:34 up 5 min,  2 users,  load average: 0.00, 0.03, 0.03
192.168.86.132 | CHANGED | rc=0 >>
 23:16:34 up 31 min,  2 users,  load average: 0.00, 0.01, 0.04

3、检查节点的内核版本

[root@k8s-master ~]# ansible k8s-node -a 'uname -r'
192.168.86.132 | CHANGED | rc=0 >>
3.10.0-1062.el7.x86_64
192.168.86.133 | CHANGED | rc=0 >>
3.10.0-1062.el7.x86_64
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值