想要学习ansible,只有一个节点肯定是不行的,而搭建虚拟机又是一件非常费时费力费资源的事情,所以通过docker 快速搭建一个容器学习环境是一个不错的选择

1. 了解ansible部署

1.1 需要安装些什么

Ansible默认通过 SSH 协议管理机器。

安装Ansible之后,不需要启动或运行一个后台进程,或是添加一个数据库。只要在一个节点上安装好,就可以通过这台电脑管理一组远程的机器。在远程被管理的机器上,不需要安装运行任何软件,因此升级Ansible版本不会有太多问题.

1.2 对管理主机的要求

  • 目前,只要机器上安装了 Python 2.6 或 Python 2.7 (windows系统不可以做控制主机),都可以运行Ansible.
  • 主机的系统可以是 Red Hat, Debian, CentOS, OS X, BSD的各种版本,等等.
  • 自2.0版本开始,ansible使用了更多句柄来管理它的子进程,对于OS X系统,你需要增加ulimit值才能使用15个以上子进程,方法 sudo launchctl limit maxfiles 1024 2048,否则你可能会看见”Too many open file”的错误提示.

1.3 对托管节点的要求

通常我们使用 ssh 与托管节点通信,默认使用 sftp.如果 sftp 不可用,可在 ansible.cfg 配置文件中配置成 scp 的方式. 在托管节点上也需要安装 Python 2.4 或以上的版本.如果版本低于 Python 2.5 ,还需要额外安装一个模块:

  • python-simplejson

2. ansible环境部署

所以通过第一部分介绍,我们的学习环境准备4个节点,所有节点安装相同的python版本,然后在一个节点安装ansible即可。

ansible

host1

host2

host3

2.1 构建镜像

Dockerfile.host

# Latest version of centos7
FROM centos:centos7
RUN yum clean all && \
yum -y install epel-release && \
yum -y install PyYAML python-jinja2 python-httplib2 python-keyczar python-paramiko python-setuptools git python-pip vim net-tools openssh-server
# sshd
RUN sed -i "s/#PermitRootLogin.*/PermitRootLogin yes/g" /etc/ssh/sshd_config && \
ssh-keygen -t rsa -P "" -f /etc/ssh/ssh_host_rsa_key && \
ssh-keygen -t ecdsa -P "" -f /etc/ssh/ssh_host_ecdsa_key && \
ssh-keygen -t ed25519 -P "" -f /etc/ssh/ssh_host_ed25519_key
EXPOSE 22
RUN echo "root:123456" | chpasswd
CMD ["/usr/sbin/sshd", "-D"]

Dockerfile.ansible

# Latest version of centos7
FROM centos:centos7
RUN yum clean all && \
yum -y install epel-release && \
yum -y install PyYAML python-jinja2 python-httplib2 python-keyczar python-paramiko python-setuptools git python-pip vim net-tools openssh-server ansible
# sshd
RUN sed -i "s/#PermitRootLogin.*/PermitRootLogin yes/g" /etc/ssh/sshd_config && \
ssh-keygen -t rsa -P "" -f /etc/ssh/ssh_host_rsa_key && \
ssh-keygen -t ecdsa -P "" -f /etc/ssh/ssh_host_ecdsa_key && \
ssh-keygen -t ed25519 -P "" -f /etc/ssh/ssh_host_ed25519_key
EXPOSE 22
RUN echo "root:123456" | chpasswd
CMD ["/usr/sbin/sshd", "-D"]

构建命令

# 构建ansible镜像
docker build -t myansible/asible:1.0 -f Dockerfile.ansible .
docker build -t myansible/host:1.0 -f Dockerfile.host .

2.2 运行容器

# 运行容器
## host
for ((i=1;i<=3;i++));do echo "start host$i";docker run -td --name host${i} --hostname host${i} myansible/host:1.0 ;done ## ansible
docker run -itd --name myansible --hostname myansible myansible/asible:1.0 /bin/bash

2.3 ansible容器配置ssh免密

#获取容器ip
for ((i=1;i<=3;i++));do docker inspect --format '{{.NetworkSettings.IPAddress}}' host${i};done # 进入ansible容器
docker exec -it myansible /bin/bash cat >> /etc/hosts <<EOF
172.17.0.2 host1
172.17.0.3 host2
172.17.0.4 host3
EOF ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa ssh-copy-id root@host1
ssh-copy-id root@host2
ssh-copy-id root@host3

2.4 测试ansible是否可用

# 配置hosts
vim /etc/ansible/hosts
[group1]
host1
host2
[group2]
host3

3. 清除容器及镜像

使用完了清除命令

# 清除容器
docker stop myansible && docker rm myansible
for ((i=1;i<=3;i++));do echo "clean host$i";docker stop host${i} && docker rm host${i} ;done
# 清除镜像
docker rmi myansible/asible:1.0 myansible/host:1.0

【Ansible】ansible容器学习环境搭建的更多相关文章

  1. 深度学习环境搭建:Tensorflow1.4.0+Ubuntu16.04+Python3.5+Cuda8.0+Cudnn6.0

    目录 深度学习环境搭建:Tensorflow1.4.0+Ubuntu16.04+Python3.5+Cuda8.0+Cudnn6.0 Reference 硬件说明: 软件准备: 1. 安装Ubuntu ...

  2. 保姆级教程——Ubuntu16.04 Server下深度学习环境搭建:安装CUDA8.0,cuDNN6.0,Bazel0.5.4,源码编译安装TensorFlow1.4.0(GPU版)

    写在前面 本文叙述了在Ubuntu16.04 Server下安装CUDA8.0,cuDNN6.0以及源码编译安装TensorFlow1.4.0(GPU版)的亲身经历,包括遇到的问题及解决办法,也有一些 ...

  3. Linux学习环境搭建流程

    Linux学习环境搭建 Vmware安装 VMware下载:https://www.vmware.com/go/getworkstation-win 运行安装程序,该重启安装驱动就重启,不需要就下一步 ...

  4. VS2013中Python学习环境搭建

    VS2013中Python学习笔记[环境搭建] 前言 Python是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python的设计具有很强的可读性,相比其他语言经常使用英文关键字, ...

  5. 《UNIX网络编程 卷1》之"学习环境搭建"(CentOS 7)

    <UNIX网络编程 卷1>的源码可以从www.unpbook.com下载得到.解压之后的目录为unpv13e. 详细步骤 编译 进入unpv13e目录,按如下步骤编译: ./configu ...

  6. [AI开发]centOS7.5上基于keras/tensorflow深度学习环境搭建

    这篇文章详细介绍在centOS7.5上搭建基于keras/tensorflow的深度学习环境,该环境可用于实际生产.本人现在非常熟练linux(Ubuntu/centOS/openSUSE).wind ...

  7. 大数据学习环境搭建(CentOS6.9+Hadoop2.7.3+Hive1.2.1+Hbase1.3.1+Spark2.1.1)

    node1 192.168.1.11 node2 192.168.1.12 node3 192.168.1.13 备注 NameNode Hadoop Y Y 高可用 DateNode Y Y Y R ...

  8. Python学习环境搭建——VMware,Ubuntu,Anaconda,Pycharm

    1.安装VMware虚拟机,版本是14.1.2(含注册码) 链接:https://pan.baidu.com/s/1ffNLONDjEMYDAenE36gRpA 密码:yazx 注:我的电脑分辨率较高 ...

  9. Docker学习-环境搭建

    ChuanGoing 2019-12-15 本篇是DevOps Docker介绍第一篇,首先说下为何另开一篇来讲解本系列. 原因有二: 1.重新复习下个人对于DevOps/Docker的学习之路 2. ...

随机推荐

  1. 【第一期百题计划进行中,快来打卡学习】吃透java、细化到知识点的练习题及笔试题,助你轻松搞定java

    [快来免费打卡学习]参与方式 本期百题计划开始时间:2022-02-09,今日打卡题已在文中标红. 0.本文文末评论区打卡,需要登录才可以打卡以及查看其他人的打卡记录 1.以下练习题,请用对应的知识点 ...

  2. kali linux更新msf 报错Unable to find a spec satisfying metasploit-framework (>= 0) in the set. Perhaps the解决办法

    首先换更新源 :vim  /etc/apt/sources.list deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free co ...

  3. linux下用crunch工具生成密码

    crunch是一款linux下的压缩后仅仅38k的小程序,crunch程序在2004年及以前由email为的作者编写mimayin@aciiid.ath.cx,后续版本由bofh28@gmail.co ...

  4. 从这3个方面考虑BI工具,选型一选一个准

    BI工具在很多场合都能听到,那么BI工具有什么功能呢?能给企业带来什么?好用的BI工具长什么样?今天跟着小编走近BI工具,一探究竟! 首先要了解BI工具的定义,什么是BI工具.BI工具是指利用现代数据 ...

  5. 【C# 线程】 延迟初始化

    1. 简介 1.延迟初始化出现于.NET 4.0,主要用于提高性能,避免浪费计算,并减少程序内存要求.也可以称为,按需加载. 2.从net 4.0开始,C#开始支持延迟初始化,通过Lazy关键字,我们 ...

  6. 修改安卓AVD虚拟机的默认下载路径

    因为安卓虚拟机的默认下载路径是在C盘,会在C盘中的.android文件中下载虚拟机,非常的占用C盘的宝贵资源,而且我发现这个.android文件即使删掉,只要打开AndroidStudio软件,它就会 ...

  7. selenium+python自动化106 - 滑动 iframe 上的滚动条

    前言 页面嵌套了iframe,这个iframe又是可以滚动的,如何操作iframe上的滚动条? 示例 写一个html页面案例,源码如下 <!DOCTYPE html> <html l ...

  8. Excel:如何在间断的序号间插入空行

    https://jingyan.baidu.com/article/e6c8503cb7ad7de54e1a1851.html

  9. WinRar:你需要从上一压缩卷启动解压命令以便解压

    大文件被分解成许多个小的RAR文件,并按顺序排列好,解压时只需解压第一个RAR文件即可顺利解压所有文件,如果不按顺序解压就会出现上述问题,导致解压完一个子文件候无法解压剩下的文件

  10. Python:用正则表达式,提取字符串中的所有中文

    import re def clean(line): pattern = re.compile(u'[^\u4e00-\u9fa5]') #中文的范围为\u4e00-\u9fa5 line = re. ...