一 Ansible自动化运维工具

Python 在运维工作中的经典应用

ansible(批量管理操作)

.安装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()
验证方式:
()用户+密码(PAM)
()秘钥验证(公钥:钥匙和私钥:锁)
通过秘钥对实现,需要将公钥分发到各节点
+++++++++++++++++++++++++++++++
.管理被控端,管理机先生成秘钥,然后推送公钥 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 {..};do ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0..$i;done .配置被管理的主机清单
[root@demo ~]# vim /etc/ansible/hosts
#覆盖原来内容
[web]
10.0.0.100
10.0.0.200 .使用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= >>
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 98G .4G 95G % /
devtmpfs 477M 477M % /dev
tmpfs 488M 488M % /dev/shm
tmpfs 488M 7.7M 480M % /run
tmpfs 488M 488M % /sys/fs/cgroup
/dev/sda1 197M 102M 96M % /boot
tmpfs 98M 98M % /run/user/ 10.0.0.11 | CHANGED | rc= >>
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 98G .6G 97G % /
devtmpfs 981M 981M % /dev
tmpfs 992M 124K 992M % /dev/shm
tmpfs 992M 9.6M 982M % /run
tmpfs 992M 992M % /sys/fs/cgroup
/dev/sda1 197M 102M 96M % /boot
tmpfs 199M 199M % /run/user/ .ansible playbook自动化安装nginx
[root@demo ~]# vim playbook_nginx.yml
- hosts: web
remote_user: root
vars:
http_port:
tasks:
- name: Add Nginx Yum Repository
yum_repository:
name: nginx
description: Nginx Repository
baseurl: http://nginx.org/packages/centos/7/$basearch/
gpgcheck: no - name: Install Nginx Server
yum:
name=nginx state=present - name: Configure Nginx Server
template: src=./default.conf.template dest=/etc/nginx/conf.d/default.conf
notify: Restart Nginx Server - name: Start Nginx Server
service: name=nginx state=started enabled=yes handlers:
- name: Restart Nginx Server
service: name=nginx state=restarted .
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;
}
} .执行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容器技术

、环境准备类:
#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= \
docker-ce-17.03..ce-.el7.centos.x86_64 \
docker-ce-selinux-17.03..ce-.el7.centos.noarch #重载
systemctl daemon-reload
#重启docker
systemctl restart docker #查看docker版本,详细
docker version
docker info 配置镜像加速 阿里云Docker-hub https://cr.console.aliyun.com/cn-hangzhou/mirrors mkdir -p /etc/docker tee /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"]
} . pull常用镜像
docker pull centos:6.9
docker pull centos:7.5.
docker pull nginx CPU MEM IO OS : Kernel
docker技术三部分:image镜像,container容器,registry仓库
镜像:传统虚拟机上面安装的镜像包含两个部分,一个是Linux内核的发行版(比如Linux3.13内核),一个是操作系统的发行版(docker镜像)。
容器:镜像是静态的,每一层都 只是可读的,通过镜像创建容器就是在镜像上加一个可读可写的层。 . 镜像管理
1.1 下载镜像
docker search centos #查看镜像有哪些版本
docker pull centos:6.9 #下载镜像
docker pull centos:7.5.
docker pull nginx
1.2 查询以下载的镜像信息
docker images #下载镜像信息
docker images -q #只看id
docker 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.gz 1.5 启动容器并获取镜像
[root@docker ~]# docker run -d -p : httpd #后台启动
[root@docker ~]# docker ps -a
[root@docker ~]# docker images 定制镜像: centos7.+vim+net-tools+iproute+sshd
(本质 打包:基础镜像+定制功能)
.启动新容器(镜像上加个可读写层)
docker run -it --name "centos7.5" 76d6bc25b8a5
# 新容器命名 基础镜像id
.优化yum源(这里是本地base源优化) (按实际情况操作要不要优化)
mv /etc/yum.repos.d/*.repo /tmp
echo -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-* -y 4.启动SSHD(服务型镜像,要hang住) mkdir /var/run/sshd
echo 'UseDNS no' >> /etc/ssh/sshd_config
sed -i -e '/pam_loginuid.so/d' /etc/pam.d/sshd
echo 'root:123456' | chpasswd
/usr/bin/ssh-keygen -A
/usr/sbin/sshd -D #hang住 注意: 以上操作做完之后,会一直不退出,需要用以下命令退回到宿主机,并不关闭容器
ctrl p q 5.制作镜像
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 容器的类型
工具类:vim
docker 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 -l docker rm 容器ID|容器名称
批量删除已关闭
docker rm -v $(docker ps -aq -f status=exited)
批量强制删除所有
docker rm -f `docker ps -a –q` docker top nginx
docker inspect nginx
docker attach 容器ID|容器名称(工具类)配合ctrl+p+q
docker exec -i -t 容器ID|容器名称 /bin/bash(服务类),一般是做服务类容器调试用
[root@docker ~]# docker exec -it centos6.9 /bin/bash docker stop
docker kill docker start -i
docker 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 docker 4.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

Linux 运维工作中的经典应用ansible(批量管理)Docker容器技术(环境的快速搭建)的更多相关文章

  1. Linux运维工作中需要掌握的知识

    说到工具,在行外可以说是技能,在行内我们一般称为工具,就是运维必须要掌握的工具.我就大概列出这几方面,这样入门就基本没问题了.linux系统如果是学习可以选用redhat或centos,特别是cent ...

  2. Python在运维工作中的经典应用之ansible

    1.安装ansible wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo curl -o /e ...

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

    前言 我们已经发过不少 Linux 面试题,但是单独的面试题总感觉会过于零碎,没有体系化内容给人的帮助大. 知乎上有这样一个问题:一个新手面试 Linux 运维工作至少需要知道哪些知识?其中有一个答案 ...

  4. 用7天找到月薪9K的Linux运维工作,就靠这四点

    作者:99527 来源:http://www.yunweipai.com/archives/20865.html 毕业后做了1年IDC运维,每天看看服务器状态,检查检查硬盘.内存什么的,工作没什么技术 ...

  5. 运维工作中常用到的几个rsync同步命令

    作为一个运维工程师,经常可能会面对几十台.几百台甚至上千台服务器,除了批量操作外,环境同步.数据同步也是必不可少的技能.说到“同步”,不得不提的利器就是rsync. 下面结合本人近几年运维工作中对这一 ...

  6. linux运维工作内容及岗位要求

    什么是Linux?大家日常使用电脑听歌.打游戏娱乐或处理日常工作时,接触到最多的就是Windows操作系统,电脑如果不安装Windows系统是无法进行娱乐和工作的,所有的软件程序都必须运行在操作系统之 ...

  7. 三年Linux运维工作总结教训

    Linux运维一定要知道的六类好习惯和23个教训,避免入坑! 从事运维三年半,遇到过各式各样的问题,数据丢失,网站挂马,误删数据库文件,黑客攻击等各类问题. 今天简单整理一下,分享给各位小伙伴. 一. ...

  8. Linux运维工作总结教训

    Linux运维一定要知道的六类好习惯和23个教训,避免入坑!从事运维三年半,遇到过各式各样的问题,数据丢失,网站挂马,误删数据库文件,黑客攻击等各类问题. 今天简单整理一下,分享给各位小伙伴. 一.线 ...

  9. 运维工作中sed常规操作命令梳理

    sed是一个流编辑器(stream editor),一个非交互式的行编辑器.它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间",接着用sed命令处理缓冲 ...

随机推荐

  1. PHP利用多进程处理任务

    PHP多进程一般应用在PHP_CLI命令行中执行php脚本,不要在web访问时使用.   多进程处理分解任务一般要比单进程更快.   php查看是否安装多进程模块: php -m | grep pcn ...

  2. L2-2 小字辈 (25 分)

    本题给定一个庞大家族的家谱,要请你给出最小一辈的名单. 输入格式: 输入在第一行给出家族人口总数 N(不超过 100 000 的正整数) —— 简单起见,我们把家族成员从 1 到 N 编号.随后第二行 ...

  3. THUWC2019:Reach out

    竟然还有机会去THUWC!!! 不过没有上WC线感觉有点可惜-- Day -INF~Day -2 考完NOIP两周滚回来被神仙们吊打 先是做专题,为什么会选到构造啊(ノ`Д)ノ 我构造专题有7道题留作 ...

  4. linkedin 第三方网站登录(JavaScript SDK)

    官网:https://developer.linkedin.com/docs/oauth2 一.配置LinkedIn应用程序 a.创建一个应用  |  https://www.linkedin.com ...

  5. aelf帮助C#工程师10分钟零门槛搭建DAPP&私有链开发环境

    aelf是一个可扩展的去中心化云计算区块链平台,支持高性能合约并行执行.原生多链数据交互.存储使用高性能分布式数据库. aelf整个系统可以在windows.osx及linux运行,团队在osx环境下 ...

  6. idea免费破解

    1.下载破解补丁. https://pan.baidu.com/s/1pWCr_HIHURSAbGvvo70wKA   密码:pxkv 2.下载idea网址: https://www.jetbrain ...

  7. JAVA关键字及作用

    ---恢复内容开始--- Java关键字及其作用 一. 总览: 访问控制 private protected public 类,方法和变量修饰符 abstract class extends fina ...

  8. 转 vue实现双向数据绑定之原理及实现篇

    转自:https://www.cnblogs.com/canfoo/p/6891868.html vue的双向绑定原理及实现 前言 先上个成果图来吸引各位: 代码:                  ...

  9. es6 模本字符串拼接方法 ``

    1.字符串拼接  可以使用 es6  ` ` 配合 ${xxx} 具体操作上代码 <!DOCTYPE html> <html lang="en"> < ...

  10. java多线程2

    今日大部分时间花在了C语言的链表上了,以下是我今日所学习的java多线程内容,今天学习的是多线程里的其他命令,wait,notify,nofityAll,分别是等待,唤醒,全部唤醒. 附今日敲的代码: ...