ansible自动化运维,快速入门(一)

01.Ansible 快速入门

1.Ansible基础概述

1.什么是Ansible

  • 基础批量管理工具

    • Xshell/SecureCRT

    • 密钥认证(免密码登录)+命令pssh

    • 密钥认证(免密码登录)+ 脚本

    • 批量管理工具:Ansible/SaltStack

    • 自动化本质:完成重复性工作,减少占用时间,核心:标准化

Ansible是一个IT自动化的配置管理工具,自动化主要体现在Ansible集成了

丰富模块,丰富的功能的组件,可以通过一个命令行完成一系列的操作。

进而能减少我们重复性的工作和维护成本,以提高工作的效率。

2.Ansible可以完成哪些功能

  1. 🌟🌟🌟🌟🌟执行命令: 批量执行远程命令,并发,可以对N多台主机

同时进行命令的执行。

  1. 🌟🌟🌟🌟配置管理: 批量配置软件服务,可以进行自动化的方式配

置和管理服务。

  1. 二次开发: 实现软件开发功能,jumpserver底层使用ansible来实现的

自动化管理。

  1. 🌟🌟🌟🌟剧本(playbook): 编排高级的IT任务,Ansible的Playbook

是一门编程语言,可以用来描绘一套IT架构*。

4.Ansible的架构中的控制节点、被控制节点、inventroy、ad-hoc、

playbook、连接协议这些是什么?

3.Ansible安装配置

3.1 环境准备与检查

#01 用户与端口
whoami
ss -lntup |grep ssh
#02 防火墙与selinux
[root@m01 ~]# getenforce 
Disabled 
[root@m01 ~]# systemctl is-active firewalld.service 
iptables.service 
unknown 
inactive

3.2 Ansible安装

1) Ansible急速安装

yum install ansible -y
#查看ansible的版本 
[root@manager ~]# ansible --version
# 配置文件 
/etc/ansible/ansible.cfg

# ansible <host-pattern> [options] 
--version #ansible版本信息 
-v #显示详细信息 用于排错 -vvv -vvvv debug模式 
-i #inentory 文件 主机清单文件路径,默认是 在/etc/ansible/hosts 
-m #使用的模块名称,默认使用command模块 module 
-a #使用的模块参数,模块的具体动作 action 模 块中的具体功能/参数 
-k #提示输入ssh密码,而不使用基于ssh的密钥认证 ansible 默认时候 基于密钥认证 
-C #模拟执行测试,但不会真的执行 --check 检查语法 (playbook(剧本中必备))
-T #执行命令的超时 timeout 超时时间 默认是10s
-f 修改并发数,默认是5

2) Ansible主配置文件

Ansible*的配置文件可以存放在任何位置,但配置文件有读取顺序,先

Ansible配置做一个基本了解。

ansible的配置文件有查找顺序:

1) 最先查找$ANSIBLE_CONFIG变量对应的位置和文件

2) 其次查找当前目录下ansible.cfg

3) 然后查找用户家目录下的.ansible.cfg

4) 最后查找/etc/ansible/ansible.cfg(默认)

[root@manager ~]# cat /etc/ansible/ansible.cfg 
#inventory = /etc/ansible/hosts #主机列表配置文件 
#library = /usr/share/my_modules/ #库文件存放目录 
#remote_tmp = ~/.ansible/tmp #临时py文件存放在 远程主机目录 
#local_tmp = ~/.ansible/tmp #本机的临时执行目录 
#forks = 5 #默认并发数
#sudo_user = root #默认sudo用户
#ask_sudo_pass = True #每次执行是否询问 sudo的ssh密码 
#ask_pass = True #每次执行是否询问 ssh密码 
#remote_port = 22 #远程主机端口 
ssh端口号 
host_key_checking = False #跳过检查主机指纹 
log_path = /var/log/ansible.log #ansible日志 
#如果是普通用户则需要配置提权 [privilege_escalation] 
#become=True 
#become_method=sudo 
#become_user=root 
#become_ask_pass=False 

[root@m01 ~]# egrep -v '#|^$' /etc/ansible/ansible.cfg 
[defaults] 
host_key_checking = False 
log_path = /var/log/ansible.log 
[inventory]
[privilege_escalation] 
[paramiko_connection] 
[ssh_connection] 
[persistent_connection] 
[accelerate] 
[selinux] 
[colors] 
[diff] 

4.Ansible Inventory

  • 主机清单

    • 某一台主机,多台

    • 给主机进行分组

    • 划分子组

    Inventory文件中填写需要被管理主机与主机组信息(逻辑上定义)*。默认

    Inventory文件在/etc/ansible/hosts。当然也可以自定义,然后使用-i指定

    Inventory文件位置。下面通过几个场景演示,如何配置Inventory文件

4.1 场景一、基于密码连接 🌟🌟🌟

[root@oldboy.com ~]# cat /etc/ansible/hosts 
#方式一、主机+端口+密码 ※※※※※ 
[webservers] 
10.0.0.31 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123456' 
10.0.0.41 ansible_ssh_port=22 ansible_ssh_user=root 
ansible_ssh_pass='123456' 

#方式二、主机+端口+密码 
[webservers] 
web[01:04].oldboy.com ansible_ssh_pass='123456' 

#方式三、主机+端口+密码 
[webservers] 
web[1:2].oldboy.com 
[webservers:vars]       #给webservers 主机组 设置共用 变量 variables
ansible_ssh_pass='123456' 

4.2 场景二、基于密钥连接,需要先创建公钥和私钥,并下发公钥至被控 端 🌟 🌟🌟 🌟🌟

[root@manager ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.7 
[root@manager ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.8 
[root@m01 ~]# for n in {5..10} 31 41 51 ; do ssh 172.16.1.$n hostname ;done
[root@m01 ~]# ansible all -i hosts -a 'hostname' 
172.16.1.9 | CHANGED | rc=0 >> 
web03 
172.16.1.10 | CHANGED | rc=0 >> 
web04

4.3 场景三、主机组使用方式 🌟🌟🌟🌟🌟

  • 主机清单中

    • 直接书写主机ip/域名

    • 主机分组

    • 主机分组:子组

[lbservers] #定义lbservers组 
172.16.1.5 
172.16.1.6 

[webservers] #定义webserver组 
172.16.1.7 
172.16.1.8 

[servers:children] #定义servers组包括两个子组 
[lbservers,webserver] 
lbservers 
webserver 
#servers组 包含的lb和web两个组的内容

4.4 了解:列出每个主机组下面的主机情况

[root@m01 playbook]# ansible data -i ./hosts --list-hosts
  hosts (4):
    172.16.1.7
    172.16.1.31
    172.16.1.41
    172.16.1.51
[root@m01 playbook]# ansible web -i ./hosts --list-hosts
  hosts (1):
    172.16.1.7

5.总结

  • Ansible架构-主机清单,模块,剧本 🌟🌟🌟

  • Ansible部署:yum/apt

  • Ansible命令的选项与配置🌟🌟🌟

  • Ansible Inventory 主机清单使用: 分组,子组 🌟🌟🌟🌟?

posted @ 2021-08-18 14:58  feel-ll  阅读(209)  评论(0)    收藏  举报