基于docker创建ansible以及管理容器节点

基于docker创建ansible以及管理容器节点


场景:在学习条件有限情况下,如果通过一台VM来完成docker和ansible的学习

解决:先创建自定义镜像-->构建多个ansible容器。

当然此法适用于其他类似场景。

VM环境:

  • OS:centos7
    Docker version 1.12.3, build 6b644ec
    docker-compose version 1.8.1, build 878cff1

关键点:

  • Dockerfile 编写优化
  • Docker-compose.yml 编写
  • ansible-ssh 免密钥登录
  • 容器间22端口互通

y准备工作

创建文件夹

mkdir -p /root/docker/ansible-demo && /root/docker/ansible-demo/volume2 && cd ~/docker/ansible-demo

创建dockerfile、docker-compose

Dockerfile 文件

# Set the base image to centos
FROM centos:latest
MAINTAINER osbing [email protected]
#mount volume
VOLUME ["/root/docker/ansible-demo/volume2"]
################## BEGIN INSTALLATION ######################
#install EPEL
RUN rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && yum install -y yum-priorities
# Install
#RUN yum clean all
RUN yum install -y sudo
RUN yum install -y net-tools openssh-clients openssh-server ansible vim
################## END INSTALLATION ######################
# 将sshd的UsePAM参数设置成no
RUN sed -i ‘s/UsePAM yes/UsePAM no/g‘ /etc/ssh/sshd_config
# 修改root用户密码
RUN echo "root:benny"|chpasswd
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
# 启动sshd服务并且暴露22端口
RUN mkdir /var/run/sshd
EXPOSE 22
ENTRYPOINT ["/usr/sbin/sshd","-D"]
# no cache创建镜像
#ddocker build --no-cache  -t osbing/centos_sshd:0.2 .
# 创建容器。特权模式--privileged=true
docker run -d -p 9021:22 --privileged=true --name ansible-controller1 osbing/centos_sshd:0.2
docker run -d -p 9021:22 --privileged=true --name ansible-controller osbing/centos_sshd:0.2
docker run -d -p 9022:22 --privileged=true --name ansible-node2 osbing/centos_sshd:0.2
docker run -d -p 9023:22 --privileged=true --name ansible-node3 osbing/centos_sshd:0.2

或者使用Docker-compose文件创建容器

ansible-controller:
   image: osbing/centos_sshd:0.2
   ports:
     - "9021:22"
   environment:
     HOSTNAME:ansible-controller
ansible-node2:
   image: osbing/centos_sshd:0.2
   ports:
     - "9022:22"
   environment:
     HOSTNAME:ansible-node2
 
ansible-node3:
   image: osbing/centos_sshd:0.2
   ports:
     - "9023:22"
   environment:
      HOSTNAME:ansible-node3

ssh连接到ansible-controller进行配置和管理节点

# ssh连接到ansible-controller 进行修改
ssh [email protected] -p 9021
vim /etc/ansible/hosts

# 生成公钥
ssh-keygen

拷贝公钥到被管理节点的主机上

# ssh-copy-id 拷贝公钥到被管理节点的主机上
ssh-copy-id -i [email protected]
ssh-copy-id -i [email protected]
ssh-copy-id -i [email protected]

尝试在Ansible服务端运行命令

例子1:检查Ansible节点的运行时间(uptime)

#ping测试
ansible -m ping "test-servers"

#获取系统运行时间
ansible ‘test-servers‘ -m command -a "uptime"

例子2:检查节点的内核版本

#获取内核版本
ansible ‘test-ser

例子3:给节点增加用户

#增加用户
ansible "test-servers" -m command -a "useradd mark"
ansible "test-servers" -m command -a "grep mark /etc/passwd"

例子4:重定向输出到文件中

[[email protected] ansible]# ansible "test-servers" -m command -a "df -Th" > /tmp/command-output.txt
[[email protected] ansible]# cat /tmp/command-output.txt

END

时间: 2024-12-14 12:45:30

基于docker创建ansible以及管理容器节点的相关文章

Ansible 实战:基于docker运行ansible

准备好安装了Ansible的主机,作为实验环境.有一台新安装的Centos7系统,利用ansible在主机上完成以下操作: 主机初始化设置,主要是yum 安装python3 安装docker,并且制作一个ansible的镜像 SSH和用户账号安全设置 准备工作 准备好一台安装了Centos7系统的主机,然后去ansible的主机上对目标主机进行操作.我这里的ansible也是新安装的,所以如果遇到一些没有的工具,也会在遇到的时候一步一步进行添加.下面是汇总的内容. 对于一台新装好的ansible

通过docker创建并使用apache容器

目标: 制作一个承载apache的镜像,并在一个Linux内启动5个apache容器对外提供服务 1.安装apache docker run -t -i --name=qxy_apache centos yum -y install httpd exit 2.制作镜像 docker commit qxy_apache qxy_apache:v1.0 [[email protected]-1 ~]# docker images REPOSITORY TAG IMAGE ID CREATED VIR

第五课:docker图形化界面管理-Portainer

Portainer是一个开源,轻量级Daocker管理用户界面,基于Docker API,可管理Docker主机或Swarm集群,支持最新版Docker和Swarm模式. https://github.com/portainer/portainer shipyard已不再更新 1. 创建卷 docker volume create portainer_data 2. 创建portainer容器 docker run -d docker run -d -p 8000:8000 -p 9000:90

Docker 创建 PXC 高可用集群并配置 Harpoxy 负载均衡

创建 PXC 集群环境 拉取 percona-xtradb-cluster 镜像 官方镜像地址:https://hub.docker.com/r/percona/percona-xtradb-cluster docker pull percona/percona-xtradb-cluster percona/percona-xtradb-cluster 太长,我们换个名字叫做pxc,操作如下: docker tag percona/percona-xtradb-cluster pxc 并将开始拉

docker技术剖析--镜像、容器管理

防伪码:博观而约取,厚积而薄发                                 docker技术剖析--镜像.容器管理 一.Docker简介 Docker是什么? Docker的英文本意是"搬运工",在程序员的世界里,Docker搬运的是集装箱(Container),集装箱里装的是任意类型的App,开发者通过Docker可以将App变成一种标准化的.可移植的.自管理的组件,可以在任何主流系统中开发.调试和运行. 说白了,docker是一种用了新颖方式实现的轻量级虚拟机,

【转载】基于Docker的CaaS容器云平台架构设计及市场分析

[转自]http://www.cnblogs.com/darkprince/p/5115739.html 基于Docker的CaaS容器云平台架构设计及市场分析 ---转载请注明出处,多谢!--- 1 项目背景---概述: “在移动互联网时代,企业需要寻找新的软件交付流程和IT架构,从而实现架构平台化,交付持续化,业务服务化. 容器将成为新一代应用的标准交付件,容器云将帮助企业用户构建研发流程和云平台基础设施.缩短应用向云端交付的周期,降低运营门槛.加速企业向互联网技术和业务的双转型. 容器云将

【原创】基于Docker的CaaS容器云平台架构设计及市场分析

基于Docker的CaaS容器云平台架构设计及市场分析 ---转载请注明出处,多谢!--- 1 项目背景---概述: “在移动互联网时代,企业需要寻找新的软件交付流程和IT架构,从而实现架构平台化,交付持续化,业务服务化. 容器将成为新一代应用的标准交付件,容器云将帮助企业用户构建研发流程和云平台基础设施.缩短应用向云端交付的周期,降低运营门槛.加速企业向互联网技术和业务的双转型. 容器云将对接各类代码托管库,实现自动化持续集成和DOCKER镜像构建,为新一代应用交付和开发运维一体化奠定了基础.

docker一: 镜像与容器管理

Docker的优势: 1.启动非常快,秒级实现. 2.资源利用率高,在机器中以进程的方式存在,一台机器可以跑上百个docker容器. 3.创建和配置后可以在任意地方运行docker,只需将其上传到docker仓库,用到时拉下来就可以 4.易迁移,平台依赖性不强. Docker的主要概念: 1.镜像:只读模板,类似于安装系统用到的iso文件,对于镜像我们可以自定义,比如在一台机器上安装好lnmp环境,然后打包成为一个镜像,那么后期只需要从仓库中把这个镜像拉下来就可以直接使用lnmp环境了,非常方便

基于Docker快速搭建多节点Hadoop集群--已验证

Docker最核心的特性之一,就是能够将任何应用包括Hadoop打包到Docker镜像中.这篇教程介绍了利用Docker在单机上快速搭建多节点 Hadoop集群的详细步骤.作者在发现目前的Hadoop on Docker项目所存在的问题之后,开发了接近最小化的Hadoop镜像,并且支持快速搭建任意节点数的Hadoop集群. 一. 项目简介 GitHub: kiwanlau/hadoop-cluster-docker 直接用机器搭建Hadoop集群是一个相当痛苦的过程,尤其对初学者来说.他们还没开