Linux 运维工作中的经典应用ansible(批量管理)Docker容器技术(环境的快速搭建)...
一 Ansible自动化运维工具
Python 在运维工作中的经典应用ansible(批量管理操作)1.安装ansible(需要bese epel 2种源) wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum install ansible -y克隆虚拟机hostnamectl set-hostname standby vim /etc/sysconfig/network-scripts/ifcfg-eth0 IPADDR=10.0.0.200 #改 UUID行 #删掉vim /etc/hosts 10.0.0.200 standby #最后一行添加 systemctl restart network #重启网卡+++++++++++++++++++++++++++++++ Linux的 SSHD(22) 验证方式: (1)用户+密码(PAM) (2)秘钥验证(公钥:钥匙和私钥:锁)通过秘钥对实现,需要将公钥分发到各节点 +++++++++++++++++++++++++++++++ 2.管理被控端,管理机先生成秘钥,然后推送公钥ssh-keygen #执行,一路回车 ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.0.200 ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.0.100 #注意每台都要分发mi钥 [root@demo ~]# for i in {1..12};do ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.0.$i;done3.配置被管理的主机清单 [root@demo ~]# vim /etc/ansible/hosts #覆盖原来内容 [web] 10.0.0.100 10.0.0.2004.使用ansible的ad-hoc测试 ansible all -m ping #ansible 主机组或all -m 命令 10.0.0.12 | SUCCESS => {"changed": false, "ping": "pong" } 10.0.0.11 | SUCCESS => {"changed": false, "ping": "pong" }#执行远程命令 [root@demo ~]# ansible all -m shell -a "df -h" 10.0.0.12 | CHANGED | rc=0 >> Filesystem Size Used Avail Use% Mounted on /dev/sda3 98G 3.4G 95G 4% / devtmpfs 477M 0 477M 0% /dev tmpfs 488M 0 488M 0% /dev/shm tmpfs 488M 7.7M 480M 2% /run tmpfs 488M 0 488M 0% /sys/fs/cgroup /dev/sda1 197M 102M 96M 52% /boot tmpfs 98M 0 98M 0% /run/user/010.0.0.11 | CHANGED | rc=0 >> Filesystem Size Used Avail Use% Mounted on /dev/sda3 98G 1.6G 97G 2% / devtmpfs 981M 0 981M 0% /dev tmpfs 992M 124K 992M 1% /dev/shm tmpfs 992M 9.6M 982M 1% /run tmpfs 992M 0 992M 0% /sys/fs/cgroup /dev/sda1 197M 102M 96M 52% /boot tmpfs 199M 0 199M 0% /run/user/05.ansible playbook自动化安装nginx [root@demo ~]# vim playbook_nginx.yml - hosts: webremote_user: rootvars:http_port: 80tasks:- name: Add Nginx Yum Repositoryyum_repository:name: nginxdescription: Nginx Repositorybaseurl: http://nginx.org/packages/centos/7/$basearch/ gpgcheck: no- name: Install Nginx Serveryum: name=nginx state=present- name: Configure Nginx Servertemplate: src=./default.conf.template dest=/etc/nginx/conf.d/default.confnotify: Restart Nginx Server- name: Start Nginx Serverservice: name=nginx state=started enabled=yeshandlers:- name: Restart Nginx Serverservice: name=nginx state=restarted6. default.conf.template文件如下[root@demo ~]#vim default.conf.template server {listen {{ http_port }};server_name localhost;location / {root /usr/share/nginx/html;index index.html index.htm;} }7.执行ansible-playbook 检查语法 [root@demo ~]# ansible-playbook --syntax playbook_nginx.yml 模拟执行 [root@demo ~]# ansible-playbook -C playbook_nginx.yml 执行 [root@demo ~]# ansible-playbook playbook_nginx.yml =============================================================
二 Docker容器技术
0、环境准备类: #docker.repo curl http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo #base源 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo #依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2#查询dockr版本情况 yum list docker-ce.x86_64 --showduplicates | sort -r#docker yum install -y --setopt=obsoletes=0 \ docker-ce-17.03.2.ce-1.el7.centos.x86_64 \ docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch#重载 systemctl daemon-reload #重启docker systemctl restart docker#查看docker版本,详细 docker version docker info配置镜像加速阿里云Docker-hubhttps://cr.console.aliyun.com/cn-hangzhou/mirrors mkdir -p /etc/dockertee /etc/docker/daemon.json <<-'EOF' {"registry-mirrors": ["https://68rmyzg7.mirror.aliyuncs.com"] } EOF 或者:vim /etc/docker/daemon.json{"registry-mirrors": ["https://68rmyzg7.mirror.aliyuncs.com"]}1. pull常用镜像 docker pull centos:6.9 docker pull centos:7.5.1804 docker pull nginxCPU MEM IOOS : Kernel
docker技术三部分:image镜像,container容器,registry仓库 镜像:传统虚拟机上面安装的镜像包含两个部分,一个是Linux内核的发行版(比如Linux3.13内核),一个是操作系统的发行版(docker镜像)。 容器:镜像是静态的,每一层都 只是可读的,通过镜像创建容器就是在镜像上加一个可读可写的层。1. 镜像管理1.1 下载镜像docker search centos #查看镜像有哪些版本docker pull centos:6.9 #下载镜像docker pull centos:7.5.1804docker pull nginx1.2 查询以下载的镜像信息docker images #下载镜像信息docker images -q #只看iddocker inspect ID/name:tag #更详细1.3 删除镜像docker rmi ID docker rmi `docker images -q`docker rmi $(docker images -q)1.4 导入导出镜像[root@docker ~]# docker image save nginx>/opt/nginx.tar.gz[root@docker ~]# docker image load -i /opt/nginx.tar.gz1.5 启动容器并获取镜像[root@docker ~]# docker run -d -p 80:80 httpd #后台启动[root@docker ~]# docker ps -a[root@docker ~]# docker images定制镜像: centos7.5+vim+net-tools+iproute+sshd (本质 打包:基础镜像+定制功能)1.启动新容器(镜像上加个可读写层)docker run -it --name "centos7.5" 76d6bc25b8a5# 新容器命名 基础镜像id2.优化yum源(这里是本地base源优化) (按实际情况操作要不要优化)mv /etc/yum.repos.d/*.repo /tmpecho -e "[ftp]\nname=ftp\nbaseurl=ftp://10.0.0.100/pub/centos7\ngpgcheck=0">/etc/yum.repos.d/ftp.repo注释:echo -e 处理特殊字符3. 安装必须软件包(容器定制功能)yum install -y vim net-tools iproute openssh-* -y4.启动SSHD(服务型镜像,要hang住)mkdir /var/run/sshdecho 'UseDNS no' >> /etc/ssh/sshd_configsed -i -e '/pam_loginuid.so/d' /etc/pam.d/sshdecho 'root:123456' | chpasswd/usr/bin/ssh-keygen -A/usr/sbin/sshd -D #hang住注意: 以上操作做完之后,会一直不退出,需要用以下命令退回到宿主机,并不关闭容器ctrl p q5.制作镜像docker commit centos7.5 oldguo/centos7_sshd:v2# 容器名/id 制作的镜像名:版本#dockerfile定制镜像 ## Centos7.5 #基础镜像 功能分离 [root@docker sshd]# vim dockerfile FROM centos:7.5.1804 RUN mv /etc/yum.repos.d/*.repo /tmp RUN echo -e "[ftp]\nname=ftp\nbaseurl=ftp://10.0.0.100/pub/centos7\ngpgcheck=0">/etc/yum.repos.d/ftp.repo RUN yum install -y vsftpd #ftp协议 RUN yum install -y openssh-server #对外开放远程端口用 RUN yum install -y openssh-clients RUN yum install net-tools* -y #网络管理 RUN yum install iproute-* -y #网络管理 RUN yum install -y wget #下载工具 RUN mkdir /var/run/sshd RUN echo 'UseDNS no' >> /etc/ssh/sshd_config RUN sed -i -e '/pam_loginuid.so/d' /etc/pam.d/sshd RUN echo 'root:123456' | chpasswd RUN /usr/bin/ssh-keygen -A EXPOSE 22 CMD ["/usr/sbin/sshd", "-D"]注意:/opt/dockerfile/dockerfile docker build -t "oldguo/centos7_sshd:v3" /opt/dockerfile #根据文档 制作 镜像===========================================docker run -i 与-t 一起用 交互模式--name -p端口映射 80:80 -v 数据持久化/opt:/test -d后台运行 2. 容器基本管理 2.0 容器的类型工具类:vimdocker run -it --name="test_vim" 3fe2fe0dab2e /bin/bash注意:一般都是交互式服务类:nginx docker run -d -p 8080:80 --name="discuz" nginx:1.14注意:通常要hang住,就像redis-server服务启动卡在那里。2.1 容器的多类启动方式(1)交互式启动[root@docker ~]# docker run -it --name "testcentos" centos:6.9 /bin/bash主要是针对于工具类的容器,一旦exit容器,容器就自动关闭(2)守护式启动1.交互式启动容器+Ctrl+p+q[root@docker ~]# docker run -it --name "testnginx" nginx /bin/bash加ctrl+p+q[root@docker ~]# docker attach testnginx 进入(正在运行中的容器)2.死循环docker run --name testnginx1 -d nginx /bin/sh -c "while true ;do echo hello world; sleep 1;done"3.服务前台运行sshd -D nginx -g ""各种服务hang夯住方式2.2 容器的常用管理命令docker ps -a -q -ldocker rm 容器ID|容器名称批量删除已关闭docker rm -v $(docker ps -aq -f status=exited)批量强制删除所有docker rm -f `docker ps -a –q`docker top nginxdocker inspect nginxdocker attach 容器ID|容器名称(工具类)配合ctrl+p+qdocker exec -i -t 容器ID|容器名称 /bin/bash(服务类),一般是做服务类容器调试用[root@docker ~]# docker exec -it centos6.9 /bin/bashdocker stopdocker killdocker start -idocker restart 容器ID|容器名称3. 数据卷的使用(持久化) #方式1 docker -it --name 'test' -v /opt:/test centos:7.5.1804 # 将主机的/opt 映射到容器/test #方式2 通过dockerfile配置4.制作私有仓库4.1 配置私有仓库 docker pull registry docker run -d -p 5000:5000 --restart=always --name registry -v /opt/Registry:/var/lib/registry registry #restart=always 表示docker重启仓库也跟着重启 #相当于创建了一个容器 #用5000端口vim /etc/docker/daemon.json{"registry-mirrors": ["https://68rmyzg7.mirror.aliyuncs.com"],"insecure-registries": ["10.0.0.100:5000"] }systemctl restart docker4.2 使用本地镜像: 4.2.1 制作本地镜像并push到[root@docker ~]# docker tag nginx 10.0.0.100:5000/oldguo/nginx:v1 # 给已存在的镜像打上tag标记 [root@docker ~]# docker images [root@docker ~]# docker push 10.0.0.100:5000/oldguo/nginx:v1 #使用 docker push 上传标记的镜像4.2.2 异地进行pull镜像 [root@docker ~]# docker pull 10.0.0.100:5000/oldguo/nginx:v1
转载于:https://www.cnblogs.com/3sss-ss-s/p/10226874.html
Linux 运维工作中的经典应用ansible(批量管理)Docker容器技术(环境的快速搭建)...相关推荐
- 运维工作中,你都有哪些技巧
很多人都说运维工作是苦逼的,不可否认,有时候我也这样觉的,但回头想想,又有那份工作不辛苦呢,看看那些在叙利亚前线的记者,在马路上的清洁工,在饭店不停颠勺的厨师,在理发店里两只胳膊永远呆在空中的理发师, ...
- 实用技术干货!教你用机器学习提高日常安全运维工作中的效率
作者介绍:黄龙,网易易盾资深安全工程师,专注于互联网安全,擅长安全攻防对抗和甲方安全建设,拥有CISSP认证,同时也是网易云课堂<Web安全工程师>微专业核心制作人. 一.安全运维工作 ...
- 面试 Linux 运维工作至少需要知道哪些知识?
点击上方"程序员大咖",选择"置顶公众号" 关键时刻,第一时间送达! 先不说楚枫的这般年纪,能够踏入元武一重说明了什么,最主要的是,楚枫在刚刚踏入核心地带时,明 ...
- 我的一个学生在运维工作中写的自动日志清理脚本程序
本文是我的一个学生在运维工作中写的自动日志清理脚本程序,我这里不评价该shell脚本写的好与坏,只是发出来,和大家做一个分享,如果能给大家带来一点点思路上的参考就够了. 自动日志清理脚本程序 #!/b ...
- 浅谈机场综合布线运维工作中的难点问题
随着系统规模越来越大.体系越来越复杂.信息系统的作用越来越明显.运维保障的要求越来越高,综合布线维护工作面临的问题也愈加凸显.以下以国内某大型机场在综合布线运维工作中面临的实际问题为例,给大家分享综合 ...
- linux运维每天工作内容,Linux运维工作清闲吗?每天需要干什么?
运维工作清闲吗?每天都需要做什么?其实很多人都会关注这样的问题,小编为大家详细的介绍一下吧. 其实没有任何一份的工作是非常清闲的,想要在行业内拥有更好的发展,都需要不断地进步,真正清闲的工作是不挣钱的 ...
- linux运维每天都要做什么,Linux运维工作清闲吗?每天需要干什么?
运维工作清闲吗?每天都需要做什么?其实很多人都会关注这样的问题,小编为大家详细的介绍一下吧. 其实没有任何一份的工作是非常清闲的,想要在行业内拥有更好的发展,都需要不断地进步,真正清闲的工作是不挣钱的 ...
- 从事Linux运维工作需要学习什么技能?
linux运维岗位越来越火热,想要从事这个行业的人也越来越多,那么你知道从事运维岗位应该学习什么技能吗?以下是详细的内容: 首先我们要知道,想要从事运维工作,Linux是一道坎,建议先把Linux好好 ...
- linux系统运维工作日常,linux是干什么用的?Linux运维工作日常有什么
当今的it互联网技术越来越发达,Linux运维的发展前景非常好.让我们看一下与Linux运维有关的信息. 随着开放源代码软件的影响力日益增强,Linux凭借其高效和广泛的应用优势,已成为中高端服务器的 ...
最新文章
- 2017 .NET 開發者須知
- 前序中序后序遍历的顺序
- java数组是行优先还是列优先的语言_详解C语言数组中是以列优先吗
- 工控设备 如何将数据发送到串口_嵌入式无风扇工控机在水质监测系统中的应用...
- lol转服务器维护,LOL转区系统活动_LOL转区系统活动地址_玩游戏网
- Html跨页面调用函数,一个cshtml如何在另一个cshtml中调用一个函数?
- python访问k8s的api_python过滤 Kubernetes api数据
- group by 汇总
- 前端开发~uni-app ·[项目-仿糗事百科] 学习笔记 ·000【前言】
- ubuntu18.04,Linux使用远程连接工具连接失败解决
- 超实用的工具、素材、学习网站分享
- 【无标题】RC抽取工艺文件(三)Layer map错误
- IDE——jupyter的安装与卸载
- 统信uos 没有通过系统安全验证,无法运行
- java yyyy-mm-ddthh:mm:ssz,获取录音文件下载地址接口
- c# DataTable关联dataGridView创建与修改数据
- RT_thread邮箱的使用
- linux 转发永久修改,linux-networking – 如何使用systemd在Linux中正确永久启用ip转发?...
- java安全管理器SecurityManager入门
- Mac上播放 swf 格式文件 小技巧