From 44a64943d3baa7dacfcb3c68a9e49a912c18f2d7 Mon Sep 17 00:00:00 2001 From: "changjie.fu" Date: Thu, 5 Mar 2020 10:43:52 +0800 Subject: [PATCH] Package Initialization --- README.en.md | 40 ++++++++--------- README.md | 41 ++++++++--------- ovirt-ansible-vm-infra-1.1.22.tar.gz | Bin 0 -> 25953 bytes ovirt-ansible-vm-infra.spec | 63 +++++++++++++++++++++++++++ 4 files changed, 98 insertions(+), 46 deletions(-) create mode 100644 ovirt-ansible-vm-infra-1.1.22.tar.gz create mode 100644 ovirt-ansible-vm-infra.spec diff --git a/README.en.md b/README.en.md index 22c76ac..6ff51d3 100644 --- a/README.en.md +++ b/README.en.md @@ -1,22 +1,28 @@ -# ovirt-ansible-vm-infra +# oVirt Virtual Machine Infrastructure #### Description -{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**} +The ovirt.vm-infra role manages the virtual machine infrastructure in oVirt. This role also creates inventory of created virtual machines it defines if wait_for_ip is set to true and state of virtual machine is running. All defined virtual machines are part of ovirt_vm inventory group. Role also creates ovirt_tag_{tag_name} groups if there are any tags assigned to a virtual machine and places all virtual machines with that tag to that inventory group. -#### Software Architecture -Software architecture description +Consider the following variable structure: -#### Installation +```yaml +vms: + - name: myvm1 + tag: mytag1 + profile: myprofile -1. xxxx -2. xxxx -3. xxxx + - name: myvm2 + tag: mytag2 + profile: myprofile +``` -#### Instructions +The role will create inventory group ovirt_vm with both of the virtual machines - myvm1 and myvm2. The role also creates inventory group ovirt_tag_mytag1 with virtual machine myvm1 and inventory group ovirt_tag_mytag2 with virtual machine myvm2. -1. xxxx -2. xxxx -3. xxxx +#### Requirements + +* Ansible version 2.9 or higher +* Python SDK version 4.3 or higher +* python3-jmespath or python2-jmespath #### Contribution @@ -24,13 +30,3 @@ Software architecture description 2. Create Feat_xxx branch 3. Commit your code 4. Create Pull Request - - -#### Gitee Feature - -1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md -2. Gitee blog [blog.gitee.com](https://blog.gitee.com) -3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore) -4. The most valuable open source project [GVP](https://gitee.com/gvp) -5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help) -6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/README.md b/README.md index 1526a07..c949f4d 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,28 @@ -# ovirt-ansible-vm-infra +# oVirt Virtual Machine Infrastructure #### 介绍 -{**以下是码云平台说明,您可以替换此简介** -码云是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN)。专为开发者提供稳定、高效、安全的云端软件开发协作平台 -无论是个人、团队、或是企业,都能够用码云实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)} +ovirt.vm-infra角色管理oVirt中的虚拟机基础架构。此角色还创建了创建虚拟机的清单,它定义了是否将wait_for_ip设置为true以及虚拟机正在运行的状态。所有定义的虚拟机都是ovirt_vm清单组的一部分。如果有分配给虚拟机的任何标签,角色还将创建ovirt_tag_{tag_name}组,并将带有该标签的所有虚拟机放置到该清单组。 -#### 软件架构 -软件架构说明 +考虑以下变量结构: +```yaml +vms: + - name: myvm1 + tag: mytag1 + profile: myprofile -#### 安装教程 + - name: myvm2 + tag: mytag2 + profile: myprofile +``` -1. xxxx -2. xxxx -3. xxxx +该角色将使用两个虚拟机myvm1和myvm2创建清单组ovirt_vm。该角色还将创建具有虚拟机myvm1的清单组ovirt_tag_mytag1和具有虚拟机myvm2的清单组ovirt_tag_mytag2。 -#### 使用说明 +#### 依赖说明 -1. xxxx -2. xxxx -3. xxxx +* Ansible 2.9或更高版本 +* Python SDK版本4.3或更高版本 +* python3-jmespath或python2-jmespath #### 参与贡献 @@ -27,13 +30,3 @@ 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request - - -#### 码云特技 - -1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md -2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) -3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 -4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 -5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) -6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/ovirt-ansible-vm-infra-1.1.22.tar.gz b/ovirt-ansible-vm-infra-1.1.22.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..c30f06ba9de546a23647bbf65e304bb427d315a1 GIT binary patch literal 25953 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 K%At^8p#BG(mbYsF literal 0 HcmV?d00001 diff --git a/ovirt-ansible-vm-infra.spec b/ovirt-ansible-vm-infra.spec new file mode 100644 index 0000000..1cbdfcc --- /dev/null +++ b/ovirt-ansible-vm-infra.spec @@ -0,0 +1,63 @@ +%global rolename vm-infra +%global roleprefix ovirt. +%global roleprefix_legacy ovirt- +%global roleprefix_legacy_uppercase oVirt. +%global ansible_roles_dir ansible/roles + +Name: ovirt-ansible-vm-infra +Summary: Ansible role to create virtual machine infrastructure +Version: 1.1.22 +Release: 1%{?release_suffix}%{?dist} +Source0: http://resources.ovirt.org/pub/src/ovirt-ansible-vm-infra/ovirt-ansible-vm-infra-1.1.22.tar.gz +License: ASL 2.0 +Group: Virtualization/Management +BuildArch: noarch +Url: http://www.ovirt.org + +Requires: ansible >= 2.7.2 + +%description +This Ansible role provide funtionality to create virtual machine infrastructure. + +%pretrans -p +-- Remove the legacy directory before installing the symlink. This is known issue in RPM: +-- https://fedoraproject.org/wiki/Packaging:Directory_Replacement +path_dash = "%{_datadir}/%{ansible_roles_dir}/%{roleprefix_legacy}%{rolename}" +path_uppercase = "%{_datadir}/%{ansible_roles_dir}/%{roleprefix_legacy_uppercase}%{rolename}" + +st = posix.stat(path_dash) +if st and st.type == "directory" then + os.execute('rm -rf "'..path_dash..'"') +end + +st = posix.stat(path_uppercase) +if st and st.type == "directory" then + os.execute('rm -rf "'..path_uppercase..'"') +end + +%prep +%setup -c -q + +%build + +%install +export PKG_DATA_DIR_ORIG=%{_datadir}/%{ansible_roles_dir}/%{roleprefix}%{rolename} +export PKG_DATA_DIR=%{buildroot}$PKG_DATA_DIR_ORIG +export PKG_DOC_DIR=%{buildroot}%{_pkgdocdir} +export ROLENAME_LEGACY=%{buildroot}%{_datadir}/%{ansible_roles_dir}/%{roleprefix_legacy}%{rolename} +export ROLENAME_LEGACY_UPPERCASE=%{buildroot}%{_datadir}/%{ansible_roles_dir}/%{roleprefix_legacy_uppercase}%{rolename} +sh build.sh install + +%files +%{_datadir}/%{ansible_roles_dir}/%{roleprefix}%{rolename} +%{_datadir}/%{ansible_roles_dir}/%{roleprefix_legacy}%{rolename} +%{_datadir}/%{ansible_roles_dir}/%{roleprefix_legacy_uppercase}%{rolename} + +%doc README.md +%doc examples/ + +%license LICENSE + +%changelog +* Tue Mar 3 2020 changjie.fu - 1.1.22-1 +- Package Initialization