【Linux】【Services】【SaaS】Docker+kubernetes(3. 用ansible管理机器和软件)
1. 简介
1.1. 公司环境使用的puppet,但是我更喜欢ansible,原因有二,第一,我是红帽的忠粉:),第二,我对python比较熟悉
1.2. ansible官方网站:https://www.ansible.com/
1.3. ansible中文文档网站:http://www.ansible.com.cn/
2. 环境
2.1. ansible:ansible-2.4.2.0-1.el7
3. 安装
3.1. 直接yum就好
yum install ansible
4. 配置
4.1. 生成ssh key
ssh-keygen -t rsa
4.2. /etc/hosts
10.210.55.220 service. service
10.210.55.221 master1. master1
10.210.55.222 master2. master2
10.210.55.223 master3. master3
10.210.55.224 node1. node1
10.210.55.225 node2. node2
10.210.55.226 block1. block1
10.210.55.227 block2. block2
10.210.55.228 nginx1. nginx1
10.210.55.229 nginx2. nginx2
4.3. 把上一步输出的机器列表粘贴在/etc/ansible/hosts里面,定义好各个组
[all]
service ansible_host=10.210.55.220 hostname=service
master1 ansible_host=10.210.55.221 hostname=master1
master2 ansible_host=10.210.55.222 hostname=master2
master3 ansible_host=10.210.55.223 hostname=master3
node1 ansible_host=10.210.55.224 hostname=node1
node2 ansible_host=10.210.55.225 hostname=node2
block1 ansible_host=10.210.55.226 hostname=block1
block2 ansible_host=10.210.55.227 hostname=block2
nginx1 ansible_host=10.210.55.228 hostname=nginx1
nginx2 ansible_host=10.210.55.229 hostname=nginx2 [master]
master1
master2
master3 [etcd]
master1
master2
master3 [worker]
node1
node2 [block]
block1
block2 [kube-master:children]
master [kube-node:children]
worker [k8s-cluster:children]
kube-master
kube-node
4.4. 吧ssh-key拷贝的目标主机上实现免密码登录
for i in $(grep hctj /etc/ansible/hosts |grep -o "#.*"|cut -d# -f2); do ssh-copy-id $i; done
4.5. 在/etc/ansible下吧架构搭起来
[root@services ~]# mkdir -p /etc/ansible/roles/{all,master,etcd,worker,block}/{files,templetes,tasks,handlers,vars,meta} [root@services ~]# touch /etc/ansible/roles/{all,master,etcd,worker,block}/{tasks,handlers,vars,meta}/main.yml [root@services ~]# tree /etc/ansible/
/etc/ansible/
├── ansible.cfg
├── hosts
└── roles
├── all
│ ├── files
│ ├── handlers
│ │ └── main.yml
│ ├── meta
│ │ └── main.yml
│ ├── tasks
│ │ └── main.yml
│ ├── templetes
│ └── vars
│ └── main.yml
├── block
│ ├── files
│ ├── handlers
│ │ └── main.yml
│ ├── meta
│ │ └── main.yml
│ ├── tasks
│ │ └── main.yml
│ ├── templetes
│ └── vars
│ └── main.yml
├── etcd
│ ├── files
│ ├── handlers
│ │ └── main.yml
│ ├── meta
│ │ └── main.yml
│ ├── tasks
│ │ └── main.yml
│ ├── templetes
│ └── vars
│ └── main.yml
├── master
│ ├── files
│ ├── handlers
│ │ └── main.yml
│ ├── meta
│ │ └── main.yml
│ ├── tasks
│ │ └── main.yml
│ ├── templetes
│ └── vars
│ └── main.yml
└── worker
├── files
├── handlers
│ └── main.yml
├── meta
│ └── main.yml
├── tasks
│ └── main.yml
├── templetes
└── vars
└── main.yml 36 directories, 22 files
4.6. 配置文件/etc/ansible/start.yml
- hosts: all
name: playbook of all servers
remote_user: root
roles:
- all
- hosts: master
name: playbook of master
remote_user: root
roles:
- master
- hosts: etcd
name: playbook of master
remote_user: root
roles:
- master
- hosts: worker
name: playbook of worker
remote_user: root
roles:
- worker
- hosts: block
name: playbook of block
remote_user: root
roles:
- block #定义角色的时候还可以同时传入变量或者添加条件
##- host: mysql
## name: mysql
## roles:
## - {role: mysql, username: dbuser}
## - {role: mysql, when: "ansible_distribution_major_version == '7' "}
4.7. 添加all角色/etc/ansible/roles/all/tasks/main.yml
# 一些静态配置文件
- name: Change resolve.conf
copy: src=hosts dest=/etc/hosts
- name: Yum repo
copy: src=epel.repo dest=/etc/yum.repos.d/epel.repo #系统默认安装后需要安装的软件都写这下面,我就用tree和htop做了一个例子
- name: Tools after server installed
when: ansible_distribution_major_version == "7"
yum: name={{ item }} state=present disable_gpg_check=yes
with_items:
- tree
- htop
- net-tools
- vim
- bind-utils #系统默认安装后其他需要安装的软件
- name: Extra services after server is basic installed
when: ansible_distribution_major_version == "7"
yum: name={{ item.name }} state={{ item.state }}
with_items:
- { name: 'chrony', state: 'present' } #定义系统服务启动级别
- name: Enable/Disable services when server boot
service: name={{ item.name }} enabled={{ item.enabled }}
with_items:
- {name: 'chronyd', enabled: 'true'}
- {name: 'NetworkManager', enabled: 'false'}
4.8. 此时的ansible目录结构如下
/etc/ansible/
├── ansible.cfg
├── hosts
├── roles
│ ├── cache
│ │ ├── files
│ │ ├── handlers
│ │ │ └── main.yml
│ │ ├── meta
│ │ │ └── main.yml
│ │ ├── tasks
│ │ │ └── main.yml
│ │ ├── templetes
│ │ └── vars
│ │ └── main.yml
│ ├── ceph
│ │ ├── files
│ │ ├── handlers
│ │ │ └── main.yml
│ │ ├── meta
│ │ │ └── main.yml
│ │ ├── tasks
│ │ │ └── main.yml
│ │ ├── templetes
│ │ └── vars
│ │ └── main.yml
│ ├── default
│ │ ├── files
│ │ │ ├── chrony.conf
│ │ │ ├── resolv.conf
│ │ │ └── rhel7-actual-x86_64.repo
│ │ ├── handlers
│ │ │ └── main.yml
│ │ ├── meta
│ │ │ └── main.yml
│ │ ├── tasks
│ │ │ └── main.yml
│ │ ├── templetes
│ │ └── vars
│ │ └── main.yml
│ ├── dr
│ │ ├── files
│ │ ├── handlers
│ │ │ └── main.yml
│ │ ├── meta
│ │ │ └── main.yml
│ │ ├── tasks
│ │ │ └── main.yml
│ │ ├── templetes
│ │ └── vars
│ │ └── main.yml
│ ├── etcd
│ │ ├── files
│ │ ├── handlers
│ │ │ └── main.yml
│ │ ├── meta
│ │ │ └── main.yml
│ │ ├── tasks
│ │ │ └── main.yml
│ │ ├── templetes
│ │ └── vars
│ │ └── main.yml
│ ├── k8s
│ │ ├── files
│ │ ├── handlers
│ │ │ └── main.yml
│ │ ├── meta
│ │ │ └── main.yml
│ │ ├── tasks
│ │ │ └── main.yml
│ │ ├── templetes
│ │ └── vars
│ │ └── main.yml
│ └── mysql
│ ├── files
│ ├── handlers
│ │ └── main.yml
│ ├── meta
│ │ └── main.yml
│ ├── tasks
│ │ └── main.yml
│ ├── templetes
│ └── vars
│ └── main.yml
├── start.retry
└── start.yml 50 directories, 35 files
4.9. 一些常用的命令组合
ansible-doc -l ansible-doc -s MODULE_NAME ansible GROUP_NAME -s MODULE_NAME -a ARGVS
【Linux】【Services】【SaaS】Docker+kubernetes(3. 用ansible管理机器和软件)的更多相关文章
- Ansible 管理服务和软件
[root@Ansible ~]# ansible RAC -m yum -a 'name=iscsi-initiator-utils state=installed' RAC_Node1 | suc ...
- Docker 运维高级应用管理
Docker 基本应用 1.Docker 介绍及安装 2.Docket 使用命令 3.Docker run命令参数整理 4.Docker 构建镜像 Docker Compose 高级应用 1.Doc ...
- 【Linux】【Services】【SaaS】Docker+kubernetes(1. 基础概念与架构图)
1.简介 1.1. 背景:公司正在进行敏捷开发环境的搭建,以取代传统的架构,好处大大的,我就不赘述了.公司原来负责这个项目的同事要转组,我只好交给另外同事继续,但是为了防止同样的事情,我也需要深入了 ...
- 从一到万的运维之路,说一说VM/Docker/Kubernetes/ServiceMesh
摘要:本文从单机真机运营的历史讲起,逐步介绍虚拟化.容器化.Docker.Kubernetes.ServiceMesh的发展历程.并重点介绍了容器化阶段之后,各项重点技术的安装.使用.运维知识.可以说 ...
- Docker+ Kubernetes已成为云计算的主流(二十五)
前言 最近正在抽时间编写k8s的相关教程,很是费时,等相关内容初步完成后,再和大家分享.对于k8s,还是上云更为简单.稳定并且节省成本,因此我们需要对主流云服务的容器服务进行了解,以便更好地应用于生产 ...
- 升级项目到.NET Core 2.0,在Linux上安装Docker,并成功部署
概述 容器,顾名思义是用来存放并容纳东西的器皿: 而容器技术伴着Docker的兴起也渐渐的映入大家的眼帘,它是一个抽象的概念,同时也是默默存在世上多年的技术,不仅能使应用程序间完全的隔离,而且还能在共 ...
- 从Docker 到Jenkins 到Ansible的部署经验
从Docker 到Jenkins 到Ansible的部署经验 工作中,除了开发功能,还负责系统的部署工作.我从频繁的部署工作中,逐渐找到了一些偷懒的方法.从传统的Java -jar命令启动服务,到通过 ...
- Docker Kubernetes 环境搭建
Docker Kubernetes 环境搭建 节点规划 版本 系统:Centos 7.4 x64 Docker版本:18.09.0 Kubernetes版本:v1.8 etcd存储版本:etcd-3. ...
- Docker Kubernetes Service 网络服务代理模式详解
Docker Kubernetes Service 网络服务代理模式详解 Service service是实现kubernetes网络通信的一个服务 主要功能:负载均衡.网络规则分布到具体pod 注 ...
随机推荐
- let that = this用法解析
这种情况就是在一个代码片段里this有可能代表不同的对象,而编码者希望this代表最初的对象
- S2-001漏洞分析
前言 开始好好学Java,跟着师傅们的文章走一遍 Strust简介 Struts2是流行和成熟的基于MVC设计模式的Web应用程序框架. Struts2不只是Struts1下一个版本,它是一个完全重写 ...
- [第二章]c++学习笔记4(复制构造函数)
性质 (1)只有一个参数,即被同类对象的引用. 注 起作用的三种情况 注 常量引用参数
- webpack 项目接入Vite的通用方案介绍(上)
愿景 希望通过本文,能给读者提供一个存/增量项目接入Vite的点子,起抛砖引玉的作用,减少这方面能力的建设成本 在阐述过程中同时也会逐渐完善webpack-vite-serve这个工具 读者可直接fo ...
- silky微服务模块
目录 模块的定义和类型 在模块中注册服务 通过ServiceCollection实现服务注册 通过ContainerBuilder实现服务注册 使用模块初始化任务 使用模块释放资源 模块的依赖关系 构 ...
- centos7.6自动化安装mysql5.5
一.目的 简化安装mysql的安装过程,局限很大,仅支持centos7.6上安装mysql5.5.60,如果想在其他版本的操作系统安装mysql,请自行修改有关变量. 如果想了解mysql安装的具体过 ...
- Java的脚本机制、编译器API
学习 xxl-job 定时任务时了解到基于 JVM 的 Grovvy 脚本语言.搭建 Jenkins 时知道了编译API 1. Java 脚本机制 Java 的脚本 API 可以让我们调用 JavaS ...
- Kubernetes 入门基础
我们要学习 Kubernetes,就有首先了解 Kubernetes 的技术范围.基础理论知识库等,要学习 Kubernetes,肯定要有入门过程,在这个过程中,学习要从易到难,先从基础学习. 接下来 ...
- 计算机系统->Hello World的一生 | 程序如何运行
2021年11月27日准备发在基地微信公众号上的推文. 综合了多篇大佬的博客,以及自己已经知道的知识,对一些疑惑进行了现阶段我认为还算满意的解答. 不过又产生了很多疑问: 内存和磁盘的关系 CPU是如 ...
- 联盛德 HLK-W806 (五): W801开发板上手报告
目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...