一 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容器技术(环境的快速搭建)...相关推荐

  1. 运维工作中,你都有哪些技巧

    很多人都说运维工作是苦逼的,不可否认,有时候我也这样觉的,但回头想想,又有那份工作不辛苦呢,看看那些在叙利亚前线的记者,在马路上的清洁工,在饭店不停颠勺的厨师,在理发店里两只胳膊永远呆在空中的理发师, ...

  2. 实用技术干货!教你用机器学习提高日常安全运维工作中的效率

    作者介绍:黄龙,网易易盾资深安全工程师,专注于互联网安全,擅长安全攻防对抗和甲方安全建设,拥有CISSP认证,同时也是网易云课堂<Web安全工程师>微专业核心制作人. ​一.安全运维工作 ...

  3. 面试 Linux 运维工作至少需要知道哪些知识?

    点击上方"程序员大咖",选择"置顶公众号" 关键时刻,第一时间送达! 先不说楚枫的这般年纪,能够踏入元武一重说明了什么,最主要的是,楚枫在刚刚踏入核心地带时,明 ...

  4. 我的一个学生在运维工作中写的自动日志清理脚本程序

    本文是我的一个学生在运维工作中写的自动日志清理脚本程序,我这里不评价该shell脚本写的好与坏,只是发出来,和大家做一个分享,如果能给大家带来一点点思路上的参考就够了. 自动日志清理脚本程序 #!/b ...

  5. 浅谈机场综合布线运维工作中的难点问题

    随着系统规模越来越大.体系越来越复杂.信息系统的作用越来越明显.运维保障的要求越来越高,综合布线维护工作面临的问题也愈加凸显.以下以国内某大型机场在综合布线运维工作中面临的实际问题为例,给大家分享综合 ...

  6. linux运维每天工作内容,Linux运维工作清闲吗?每天需要干什么?

    运维工作清闲吗?每天都需要做什么?其实很多人都会关注这样的问题,小编为大家详细的介绍一下吧. 其实没有任何一份的工作是非常清闲的,想要在行业内拥有更好的发展,都需要不断地进步,真正清闲的工作是不挣钱的 ...

  7. linux运维每天都要做什么,Linux运维工作清闲吗?每天需要干什么?

    运维工作清闲吗?每天都需要做什么?其实很多人都会关注这样的问题,小编为大家详细的介绍一下吧. 其实没有任何一份的工作是非常清闲的,想要在行业内拥有更好的发展,都需要不断地进步,真正清闲的工作是不挣钱的 ...

  8. 从事Linux运维工作需要学习什么技能?

    linux运维岗位越来越火热,想要从事这个行业的人也越来越多,那么你知道从事运维岗位应该学习什么技能吗?以下是详细的内容: 首先我们要知道,想要从事运维工作,Linux是一道坎,建议先把Linux好好 ...

  9. linux系统运维工作日常,linux是干什么用的?Linux运维工作日常有什么

    当今的it互联网技术越来越发达,Linux运维的发展前景非常好.让我们看一下与Linux运维有关的信息. 随着开放源代码软件的影响力日益增强,Linux凭借其高效和广泛的应用优势,已成为中高端服务器的 ...

最新文章

  1. 2017 .NET 開發者須知
  2. 前序中序后序遍历的顺序
  3. java数组是行优先还是列优先的语言_详解C语言数组中是以列优先吗
  4. 工控设备 如何将数据发送到串口_嵌入式无风扇工控机在水质监测系统中的应用...
  5. lol转服务器维护,LOL转区系统活动_LOL转区系统活动地址_玩游戏网
  6. Html跨页面调用函数,一个cshtml如何在另一个cshtml中调用一个函数?
  7. python访问k8s的api_python过滤 Kubernetes api数据
  8. group by 汇总
  9. 前端开发~uni-app ·[项目-仿糗事百科] 学习笔记 ·000【前言】
  10. ubuntu18.04,Linux使用远程连接工具连接失败解决
  11. 超实用的工具、素材、学习网站分享
  12. 【无标题】RC抽取工艺文件(三)Layer map错误
  13. IDE——jupyter的安装与卸载
  14. 统信uos 没有通过系统安全验证,无法运行
  15. java yyyy-mm-ddthh:mm:ssz,获取录音文件下载地址接口
  16. c# DataTable关联dataGridView创建与修改数据
  17. RT_thread邮箱的使用
  18. linux 转发永久修改,linux-networking – 如何使用systemd在Linux中正确永久启用ip转发?...
  19. java安全管理器SecurityManager入门
  20. Mac上播放 swf 格式文件 小技巧

热门文章

  1. c#+ArcGIS Engine-获取矢量图层的空间参考
  2. 第十一章:WEB浏览器中的javascript
  3. 如何使用MFC和类型库创建自动化项目
  4. JS函数浅析之constructor、prototype属性
  5. 二线城市的我,和北京的同学比成长
  6. Java parallel control
  7. Axure 6.5 RP下载,汉化
  8. 【Anychat音视频开发】相对路径与绝对路径详解
  9. VM虚拟机常见问题之五--网络相关的问题
  10. .net Redis使用公共方法引用CSRedisCore