chouseknecht.cluster-up-role

构建状态

cluster-up-role

安装OpenShift客户端,并使用oc cluster up创建本地实例。

该角色旨在支持Ansible Container的演示和测试需求,通过自动化安装和配置OpenShift指南中的任务来实现。

具体来说,它执行以下任务:

  • 下载并安装oc客户端
  • 在OSX上安装socat
  • 将与您公共IP地址关联的主机名添加到/etc/hosts文件中
  • 启动集群
  • 授予developer账户集群管理员权限
  • 创建路由以公开本地注册表
  • 创建持久卷
  • 使用oc客户端以developer身份登录集群,并将项目设置为default

支持的平台和测试

到目前为止,该角色主要在使用Docker for Mac的OSX上进行测试。它在Travis(一个Ubuntu平台)上也基本可用。因此如果您尝试在OSX以外的环境中使用它,可能会遇到bug。如果发现问题,请务必提交issue或PR,以便我们保持角色的更新。

主机名

默认情况下,主机名local.openshift会被添加到您的*/etc/hosts文件中,并关联到您的当前IP地址。如果您更喜欢其他名称,请使用openshift_hostname*参数。

当集群被创建时,它会与您的本地网络IP地址关联。如果您在笔记本电脑或其他移动设备上工作,您可能会发现每次切换到新网络时都需要重新创建集群。创建一个与您实际IP地址关联的主机名可以让生活轻松一些。

不安全的注册表

如果您没有为Docker添加不安全的注册表选项,当您第一次执行角色时会出现错误。它会提供一条消息,告知您需要添加的子网。您还需要添加openshift_hostname值,默认值为local.openshift。在更改后重启Docker,重新运行角色,这次它将完全运行。

先决条件

您需要安装以下内容:

  • Docker引擎或Docker for Mac
  • sudo权限,以更新*/etc/hosts和将oc二进制文件安装到/usr/local/bin*。

注意:如果您使用的是Linux平台,请确保按照创建docker组的说明操作,以便您可以直接运行docker命令而不使用sudo

示例剧本

运行角色时,请确保将gather_facts设置为真值。没有事实,角色无法确定主机的IP地址和操作系统系列。

以下是一个包含所有默认参数的示例剧本。您可以在files/cluster-up.yml中找到这个确切的示例。复制并调整以适合您的环境。

    ---
    - hosts: localhost
      remote_user: root
      connection: local
      gather_facts: yes
      roles:
        - role: chouseknecht.cluster-up-role
          openshift_github_user: openshift
          openshift_github_name: origin
          openshift_github_url: https://api.github.com/repos
          openshift_release_tag_name: ""
          openshift_client_dest: /usr/local/bin  
          openshift_force_client_install: yes
          openshift_volume_name: project-data
          openshift_volume_path: "{{ lookup('env','HOME') }}/volumes/project/data"
          openshift_hostname: local.openshift
          openshift_recreate: yes

安装角色后,将files/cluster-up.yml复制到您的项目目录,并使用--ask-sudo-pass选项执行它。以下是可能的示例:

# 安装角色 
$ ansible-galaxy install chouseknecht.cluster-up-role

# 将剧本从角色路径复制到当前工作目录 
$ cp ${ANSIBLE_ROLES_PATH}/chouseknecht.cluster-up-role/files/cluster-up.yml .

# 创建localhost库存文件
$ echo "localhost">./inventory

# 运行剧本
$ ansible-playbook -i inventory --ask-sudo-pass cluster-up.yml

部署您的Ansible Container项目

在以下示例中,我们将创建一个新项目,安装容器启用角色jenkins-container,并将Jenkins服务部署到我们的本地OpenShift集群。

注意:要运行此示例,您需要安装Ansible Container 0.3.0。如果需要帮助,请参阅从源代码安装

# 创建新项目文件夹
$ mkdir jenkins

# 设置工作目录
$ cd jenkins

# 初始化项目
$ ansible-container init

# 安装jenkins-container角色
$ ansible-container install awasilyev.jenkins-container

# 构建镜像
$ ansible-container build

# 生成部署剧本和角色
$ ansible-container shipit openshift --local-images

# 将工作目录设置为ansible
$ cd ansible

# 运行shipit剧本
$ ansible-playbook shipit-openshift.yml

以上将在OpenShift上创建一个名为jenkins的新项目。要查看项目,请通过打开https://local.openshift:8443/console登录OpenShift控制台。用户名为developer,密码为developer。点击jenkins查看项目概览。

点击以下图片观看Jenkins服务部署的视频:

部署Jenkins

角色变量

使用以下变量来修改角色的行为:

openshift_github_user: openshift

oc客户端下载安装目标的GitHub仓库拥有者

openshift_github_name: origin

GitHub仓库的名称

openshift_github_url: https://api.github.com/repos

要使用的GitHub API端点。

openshift_release_tag_name: ""

oc二进制文件所需版本的标签。如果未提供,将安装最新版本。

openshift_client_dest: /usr/local/bin

oc将安装的目录。需要在您的PATH中。

openshift_force_client_install: yes

如果oc二进制文件已经存在,是否覆盖?

openshift_volume_name: project-data

卷的名称。

openshift_volume_path: "{{ lookup('env','HOME') }}/volumes/project/data"

为新卷分配空间的本地路径。

openshift_hostname: local.openshift

当您准备推送镜像时,用于引用本地注册表的主机名。

openshift_recreate: yes

如果集群已经运行,是否应终止并重新创建它?

openshift_up_options: ''

添加您想传递给oc cluster up的选项。多个选项用空格分隔,就像在命令行中一样。

依赖关系

许可证

Apache v2

作者

@chouseknecht

关于项目

Install the latest oc client and create a local OpenShift cluster using `oc cluster up`.

安装
ansible-galaxy install chouseknecht.cluster-up-role
许可证
apache-2.0
下载
159
拥有者
Ansible Galaxy Engineering Manager