• 【Ansible】ansible容器学习环境搭建


    想要学习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
    
  • 相关阅读:
    目前正在自学python,前几天做了一个比较简单的坦克大战游戏,分享出来,想搞一搞的朋友,可以参考。
    我今天给学习运维而英语不好的各位,提供一些计算机英语,感谢惨绿少年的原文和已经离开身边提供英标部分的小虾大佬,只是为了记录。
    前几天看见pthon自动跳一跳很火,自己也按捺不住寂寞,实现了一把。分享一下。图文详解,如果有问题留言,帮解决。
    day01
    java之jvm篇
    mysql
    leecode刷题——数组篇
    java基础
    python进程和线程
    python I/O编程
  • 原文地址:https://www.cnblogs.com/dreamfly2016/p/16064503.html
Copyright © 2020-2023  润新知