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服务部署的视频:
角色变量
使用以下变量来修改角色的行为:
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