From 42b9c8b837ddac6a186f8e30b44ebcbb941cb5ca Mon Sep 17 00:00:00 2001 From: kiki Date: Wed, 4 Mar 2020 16:40:22 +0800 Subject: [PATCH] Package Init --- README.en.md | 72 +++++++++++++++------ README.md | 35 ++-------- ovirt-ansible-image-template-1.1.12.tar.gz | Bin 0 -> 13277 bytes ovirt-ansible-image-template.spec | 64 ++++++++++++++++++ 4 files changed, 122 insertions(+), 49 deletions(-) create mode 100644 ovirt-ansible-image-template-1.1.12.tar.gz create mode 100644 ovirt-ansible-image-template.spec diff --git a/README.en.md b/README.en.md index 4fbc4bc..3063edd 100644 --- a/README.en.md +++ b/README.en.md @@ -1,22 +1,62 @@ # ovirt-ansible-image-template #### 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.image-template role creates a template from external image. Currently the disk can be an image in Glance external provider or QCOW2 image. -#### Software Architecture -Software architecture description +#### Requirements -#### Installation +* Ansible version 2.9 or higher. +* Python SDK version 4.3 or higher. +* oVirt has to be 4.1 or higher and ovirt-imageio must be installed and running. +* CA certificate of oVirt engine. The path to CA certificate must be specified in the ovirt_ca variable. +* File -1. xxxx -2. xxxx -3. xxxx -#### Instructions +#### Limitations +We don not support Ansible Check Mode (Dry Run), because this role is using few modules(command module), which do not support it. Once all modules used by this role will support it, we will support it. -1. xxxx -2. xxxx -3. xxxx +#### Role Variables + +| Name | Default value | | +|--------------------|-----------------------|----------------------------| +| qcow_url | UNDEF (mandatory if glance is not used) | The URL of the QCOW2 image. | +| qcow_url_client_cert | UNDEF | Path to client certificate if needed for retrieving QCOW from authenticated site. | +| qcow_url_client_key | UNDEF | Path to client key if needed for retrieving QCOW from authenticated site. | +| image_path | /tmp/ | Path where the QCOW2 image will be downloaded to. If directory the base name of the URL on the remote server will be used. | +| image_checksum | UNDEF | If a checksum is defined, the digest of the destination file will be calculated after it is downloaded to ensure its integrity and verify that the transfer completed successfully. Format: :, e.g. checksum="sha256:D98291AC[...]B6DC7B97". | +| image_cache_download | true | When set to false will delete image_path at the start and end of execution | +| template_cluster | Default | Name of the cluster where template must be created. | +| template_io_threads| UNDEF | Number of IO threads used by template. 0 means IO threading disabled. (Added in ansible 2.7)| +| template_name | mytemplate | Name of the template. | +| template_memory | 2GiB | Amount of memory assigned to the template. | +| template_memory_guaranteed | UNDEF | Amount of minimal guaranteed memory of the Virtual Machine | +| template_memory_max | UNDEF | Upper bound of virtual machine memory up to which memory hot-plug can be performed. | +| template_cpu | 1 | Number of CPUs assigned to the template. | +| template_disk_storage | UNDEF | Name of the data storage domain where the disk must be created. If not specified, the data storage domain is selected automatically. | +| template_disks | [] | List of dictionaries specifying the additional template disks. See below for more detailed description. | +| template_disk_size | 10GiB | The size of the template disk. | +| template_disk_name | UNDEF | The name of template disk. | +| template_disk_format | UNDEF | Format of the template disk. | +| template_disk_interface | virtio | Interface of the template disk. (Choices: virtio, ide, virtio_scsi) | +| template_seal | true | 'Sealing' erases all machine-specific configurations from a filesystem. Not supported on Windows. Set this to 'false' for Windows. | +| template_timeout | 600 | Amount of time to wait for the template to be created/imported. | +| template_type | UNDEF | The type of the template: desktop, server or high_performance (for qcow2 based templates only) | +| template_nics | {name: nic1, profile_name: ovirtmgmt, interface: virtio} | List of dictionaries that specify the NICs of template. | +| template_operating_system | UNDEF | Operating system of the template like: other, rhel_7x64, debian_7, see others in ovirt_template module. | +| glance_image_provider | UNDEF (mandatory if qcow_url is not used) | Name of the glance image provider. | +| glance_image | UNDEF (mandatory if qcow_url is not used) | This parameter specifies the name of disk in glance provider to be imported as template. | +| template_prerequisites_tasks | UNDEF | Works only with qcow image. Specify a path to Ansible tasks file, which should be executed on virtual machine before creating a template from it. Note that qcow image must contain guest agent which reports IP address. | + +The `template_disks` List of dictionaries can contain following attributes: + +| Name | Default value | | +|--------------------|----------------|----------------------------------------------| +| name | UNDEF (Required) | The name of the additional disk. | +| size | UNDEF (Required) | The size of the additional disk. | +| storage_domain | UNDEF | The name of storage domain where disk should be created. If no value is passed, value is set by template_disk_storage. | +| interface | UNDEF | The interface of the disk. If no value is passed, value is set by template_disk_interface. | +| format | UNDEF | Specify format of the disk. If no value is passed, value is set by template_disk_format.
  • cow - If set, the disk will by created as sparse disk, so space will be allocated for the volume as needed. This format is also known as thin provisioned disks
  • raw - If set, disk space will be allocated right away. This format is also known as preallocated disks.
| +| bootable | UNDEF | True if the disk should be bootable. | #### Contribution @@ -24,13 +64,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 47d7ab3..d1c9391 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,14 @@ # ovirt-ansible-image-template #### 介绍 -{**以下是码云平台说明,您可以替换此简介** -码云是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN)。专为开发者提供稳定、高效、安全的云端软件开发协作平台 -无论是个人、团队、或是企业,都能够用码云实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)} +Ansible的ovirt.image-template角色用于为外部镜像创建模板。目前磁盘可以是Glance提供的外部镜像,或者是QCOW2镜像。 -#### 软件架构 -软件架构说明 - - -#### 安装教程 - -1. xxxx -2. xxxx -3. xxxx - -#### 使用说明 - -1. xxxx -2. xxxx -3. xxxx +#### 依赖说明 +* Ansible 2.9或更高版本。 +* PythonSDK4.3或更高版本。 +* oVirt必须为4.1或更高版本,并且必须安装并运行oVirt imageio。 +* oVirt引擎的CA证书。必须在ovirt_CA变量中指定CA证书的路径。 +* 文件 #### 参与贡献 @@ -27,13 +16,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-image-template-1.1.12.tar.gz b/ovirt-ansible-image-template-1.1.12.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..a1cb69130323ecde682c1cdcb4a53de664d3d729 GIT binary patch literal 13277 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 2.7.2 + +%description +This Ansible role provide funtionality to create virtual machine template from disk +image. + +%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 +* Wed Mar 04 2020 Huihui Fu - 1.1.12-1 +- Package Initialization