1.ansible概述安装定义主机组

一.ansible批量管理服务概述

1.1 ansible批量功能 -- 并行
    01. 可以实现批量系统操作配置
    02. 可以实现批量软件服务部署
    03. 可以实现批量文件数据分发
    04. 可以实现批量系统信息收集
1.2 ansible批量管理服务意义
    01. 提高工作的效率(部署综合架构)  
    02. 提高工作准确度
    03. 减少维护的成本
    04. 减少重复性工作 
ansible软件安装部署 saltstack自动化批量管理软件 (复杂(安装 配置 应用)) 软件服务比较重

特点:

	1. 没有配置文件(不需要配置)
	2. 不需要启动服务
	3. 客户端没有需要部署任务

缺点

执行yaml后服务器的状态发生了改变 没有办法回滚  只能写yaml来对服务器的状态进行恢复

2.配置server端:

第一个历程:安装ansible软件
yum install -y ansible   -- epel
rpm -qc ansible
	/etc/ansible/ansible.cfg                        ansible的配置文件
	/etc/ansible/hosts				主机清单文件 inventory
2.1配置ansible配置文件ansible.cfg
        #inventory      = /etc/ansible/hosts							路径重新定义
	#inventory      = ./hosts							        路径重新定义
	#library        = /usr/share/my_modules/
	#module_utils   = /usr/share/my_module_utils/
	#remote_tmp     = ~/.ansible/tmp
	#local_tmp      = ~/.ansible/tmp
	#plugin_filters_cfg = /etc/ansible/plugin_filters.yml
	#forks          = 5									调整并行的主机数量
	#host_key_checking = False								不对秘钥进行检查		
	#roles_path    = /etc/ansible/roles
2.1.1 ansible.cfg配置文件的优先级

配置文件的优先级:

# nearly all parameters can be overridden in ansible-playbook
# or with command line flags. ansible will read ANSIBLE_CONFIG,
# ansible.cfg in the current working directory, .ansible.cfg in
# the home directory or /etc/ansible/ansible.cfg, whichever it
# finds first

第一步读取:ANSIBLE_CONFIG
第二步读取:当前项目目录下的ansible.cfg
第三步读取:当前用户家目录下的 .ansible.cfg
第四步读取: /etc/ansible/ansible.cfg

ANSIBLE_CONFIG变量的验证

[root@manager ~]# export ANSIBLE_CONFIG=/tmp/ansible.cfg
[root@manager ~]# touch /tmp/ansible.cfg
[root@manager ~]# ansible --version
ansible 2.9.25
  config file = /tmp/ansible.cfg
[root@manager ~]# unset ANSIBLE_CONFIG			# 取消

为项目单独定义配置文件,非常的重要;

[root@manager ~]# mkdir project1
[root@manager ~]# cd project1/
[root@manager project1]# touch ansible.cfg
[root@manager project1]# ansible --version
ansible 2.9.25
  config file = /root/project1/ansible.cfg

为当前执行的用户家目录植入一个配置文件;

[root@manager ~]# touch ~/.ansible.cfg
[root@manager ~]# ansible --version
ansible 2.9.25
  config file = /root/.ansible.cfg

默认的配置文件加载路径,优先级是最低的

[root@manager project1]# rm -f ~/.ansible.cfg
[root@manager ~]# ansible --version
ansible 2.9.25
  config file = /etc/ansible/ansible.cfg
2.2配置inventory主机清单定义

2.2.1在inventory定义主机写入主机连接信息

# 详细清单文件;
[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[1:2].oldxu.com ansible_ssh_pass='123456'

2.2.2 做ssh免密交互后定义主机
免密

        ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.7
	ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.8
	ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.41
	ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.51

2.2.3 定义主机

vim /etc/ansible/hosts
[web]
192.168.1.201
192.168.1.202
192.168.1.203
192.168.1.204
192.168.1.205
192.168.1.214
192.168.1.240
192.168.1.241

检查
root@XTTD-2020YSWIII:~# ansible web -m ping
192.168.1.201 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
192.168.1.202 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
192.168.1.205 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
192.168.1.204 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
192.168.1.203 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

2.2.4 定义主机组

vim  /etc/ansible/hosts
[k8s_proxy]
192.168.1.201
192.168.1.202
[k8s_apiserver]
192.168.1.203
192.168.1.204
[root@rstx-53 scripts]# ansible k8s_apiserver  -m  ping 
192.168.1.204 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
192.168.1.203 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}

2.2.5 ip范围定义

[test]
192.168.1.[201:205]

2.2.6 支持特殊变量信息配置 (剧本)

[oldboy]
172.16.1.7
[oldboy:vars]
ansible_user=root 
ansible_password=123456 
ansible_port=22

2.2.7 嵌入式配置方法

vim /etc/ansible/hosts
[k8s:children]
k8s_proxy
k8s_apiserver
k8s_node

[k8s_proxy]
192.168.1.201
192.168.1.202
[k8s_apiserver]
192.168.1.203
192.168.1.204
[k8s_node]
192.168.1.205
192.168.1.214
192.168.1.240
192.168.1.241
[root@rstx-53 scripts]# ansible k8s -m ping 
192.168.1.202 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
192.168.1.201 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
192.168.1.205 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
192.168.1.204 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
192.168.1.203 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}

3.ad-hoc 单个模块执行过程

ad-hoc是什么
ad-hoc是单个模块在一个或多个主机执行的过程
ansible-playbook是什么
ansible-palybook是多个模块在一个或多个主机执行的过程
ad-hoc语法结构:

ansible groups -m command -a '命令' -i /etc/ansible/hosts
-m 指定执行的模块
-a 执行的动作
-i 指定inventory
-f 指定执行的进程数量

ad-hoc执行过程
1.加载配置;
2.读取inventory;
3.操作对应的目标主机组;如果组不存在则报错;
4.构建对应的py文件,推送到远程目标主机;
5.远程主机执行该文件;
6.执行完成后,删除对应的py文件;
7.像服务端返回最终执行结果;

posted @ 2021-03-26 10:16  老夫聊发少年狂88  阅读(156)  评论(0编辑  收藏  举报