# OS Init [TOC]: # "目录" # 目录 - [创建实例初始化操作簇](#创建实例初始化操作簇) - [更新实例初始化操作簇](#更新实例初始化操作簇) - [获取实例初始化操作簇列表](#获取实例初始化操作簇列表) - [删除实例初始化操作簇](#删除实例初始化操作簇) - [初始化操作内容变量](#初始化操作内容变量) - [添加初始化操作](#添加初始化操作) - [获取初始化操作列表](#获取初始化操作列表) - [更新实例初始化操作](#更新实例初始化操作) - [删除实例初始化操作](#删除实例初始化操作) ## 创建实例初始化操作簇 > 创建模板被实例化后的初始操作簇 ```http POST https://$domain /api/os_init Body: { "name": "CentOS-Systemd", "remark": "用作红帽 Systemd 系列的系统初始化。初始化操作依据 CentOS 7 来实现。" } ``` | 参数名称 | 必须 | 类型 | 说明 | |:-------:|:---:|:------:|:-----| | name | Y | String | 名称 | | remark | Y | String | 备注 | 响应示例 ```json { "state": { "en-us": "OK", "zh-cn": "成功", "code": "200" }, "data": { "remark": "用作红帽 Systemd 系列的系统初始化。初始化操作依据 CentOS 7 来实现。", "id": 1, "name": "CentOS-Systemd" } } ``` ## 更新实例初始化操作簇 > 更新实例初始操作簇 ```http PATCH https://$domain /api/os_init/{os_init_id} Body: { "name": "CentOS-Systemd", "remark": "用作红帽 Systemd 系列的系统初始化。初始化操作依据 CentOS 7 来实现。" } ``` | 参数名称 | 必须 | 类型 | 说明 | |:----------:|:---:|:------:|:---------------| | os_init_id | Y | Long | 实例初始化簇 ID | | name | N | String | 名称 | | remark | N | String | 备注 | 响应示例 ```json { "state": { "en-us": "OK", "zh-cn": "成功", "code": "200" }, "data": { "remark": "用作红帽 Systemd 系列的系统初始化。初始化操作依据 CentOS 7 来实现。", "id": 1, "name": "RedHat-Systemd" } } ``` ## 获取实例初始化操作簇列表 > 获取实例初始化操作簇列表 ```http GET https://$domain /api/os_inits?offset={number}&limit={number} or /api/os_inits?page={number}&page_size={number} ``` | 参数名称 | 必须 | 类型 | 说明 | |:---------:|:---:|:------:|:--------------------------------------------| | offset | N | Number | 偏移量, 默认值0 | | limit | N | Number | 返回条目数量, 默认值50 | | page | N | Number | 页号, 与offset同时存在时, 以offset为准, 默认值1 | | page_size | N | Number | 页大小, 默认值50 | | order_by | N | String | 所依据的字段 | | order | N | Enum | 排序策略,`asc`\|`desc` | 响应示例 ```json { "state": { "en-us": "OK", "zh-cn": "成功", "code": "200" }, "data": [{ "remark": "用作红帽 Systemd 系列的系统初始化。初始化操作依据 CentOS 7 来实现。", "id": 1, "name": "CentOS-Systemd" }], "paging": { "prev": "http://127.0.0.1:8008/api/os_inits?page=1&page_size=50&filter=&order=asc&order_by=id", "last": "http://127.0.0.1:8008/api/os_inits?page=1&page_size=50&filter=&order=asc&order_by=id", "page_size": 50, "next": "http://127.0.0.1:8008/api/os_inits?page=1&page_size=50&filter=&order=asc&order_by=id", "limit": 50, "offset": 0, "total": 1, "page": 1, "first": "http://127.0.0.1:8008/api/os_inits?page=1&page_size=50&filter=&order=asc&order_by=id" } } ``` | 参数名称 | 必须 | 类型 | 说明 | |:--------|:---:|:------:|:-----| | id | Y | Long | ID | | name | Y | String | 名称 | | remark | Y | String | 备注 | ## 删除实例初始化操作簇 > 删除指定 id 的实例初始化操作簇 ```http DELETE https://$domain /api/os_init/{id} ``` | 参数名称 | 必须 | 类型 | 说明 | |:--------|:---:|:------:|:--------------------| | id | Y | String | 实例初始化操作簇的id。 | 响应示例 ```json { "state": { "en-us": "OK", "zh-cn": "成功", "code": "200" } } ``` ## 初始化操作内容变量 > 初始化操作时,在内容中可用的变量。最终这些变量,会被替换成全局或当时设定好的内容。 | 变量 | 描述 | |:----------:|:-----------------------| | {IP} | Guest 分配到的 IP 地址。 | | {HOSTNAME} | Guest 分配到的主机名。 | | {NETMASK} | 全局定义的子网掩码。 | | {GATEWAY} | 全局定义的网关。 | | {DNS1} | 全局定义的 DNS1。 | | {DNS2} | 全局定义的 DNS2。 | ## 添加初始化操作 > 为从模板初始化的实例,添加具体的操作 ```http POST https://$domain /api/os_init_write Body: { "os_init_id": 3, "path": "/etc/resolv.conf", "content": "nameserver {DNS1}\nnameserver {DNS2}" } ``` | 参数名称 | 必须 | 类型 | 说明 | |:----------:|:---:|:------:|:------------------------------------------------| | os_init_id | Y | Long | 初始化操作簇 ID | | path | Y | String | 将修改的文件在实例中的路径 | | content | Y | String | 文件内容。内容中可用的变量参见 [初始化操作内容变量](#初始化操作内容变量) | 响应示例 ```json { "state": { "en-us": "OK", "zh-cn": "成功", "code": "200" }, "data": { "content": "nameserver {DNS1}\nnameserver {DNS2}", "path": "/etc/resolv.conf", "id": 1, "os_init_id": 3 } } ``` ## 获取初始化操作列表 > 获取初始化操作列表 ```http GET https://$domain /api/os_init_writes?offset={number}&limit={number} or /api/os_init_writes?page={number}&page_size={number} ``` | 参数名称 | 必须 | 类型 | 说明 | |:---------:|:---:|:------:|:--------------------------------------------| | offset | N | Number | 偏移量, 默认值0 | | limit | N | Number | 返回条目数量, 默认值50 | | page | N | Number | 页号, 与offset同时存在时, 以offset为准, 默认值1 | | page_size | N | Number | 页大小, 默认值50 | | order_by | N | String | 所依据的字段 | | order | N | Enum | 排序策略,`asc`\|`desc` | 响应示例 ```json { "state": { "en-us": "OK", "zh-cn": "成功", "code": "200" }, "data": [{ "content": "nameserver {DNS1}\nnameserver {DNS2}", "path": "/etc/resolv.conf", "id": 1, "os_init_id": 3 }], "paging": { "prev": "http://127.0.0.1:8008/api/os_init_writes?page=1&page_size=50&filter=&order=asc&order_by=id", "last": "http://127.0.0.1:8008/api/os_init_writes?page=1&page_size=50&filter=&order=asc&order_by=id", "page_size": 50, "next": "http://127.0.0.1:8008/api/os_init_writes?page=1&page_size=50&filter=&order=asc&order_by=id", "limit": 50, "offset": 0, "total": 1, "page": 1, "first": "http://127.0.0.1:8008/api/os_init_writes?page=1&page_size=50&filter=&order=asc&order_by=id" } } ``` | 参数名称 | 必须 | 类型 | 说明 | |:-----------|:---:|:------:|:---------------| | id | Y | Long | ID | | os_init_id | Y | Long | 实例初始化簇 ID | | path | Y | String | 初始化的文件路径 | | content | Y | String | 初始化的文件内容 | ## 更新实例初始化操作 > 更新实例初始操作 ```http PATCH https://$domain /api/os_init_write/{id} Body: { "os_init_id": 3, "path": "/etc/hostname", "content": "{HOSTNAME}" } ``` | 参数名称 | 必须 | 类型 | 说明 | |:----------:|:---:|:------:|:-------------------| | id | Y | Number | 初始化操作 ID | | os_init_id | N | Long | 初始化操作簇 ID | | path | N | String | 初始化操作的文件路径 | | content | N | String | 初始化操作的文件内容 | 响应示例 ```json { "state": { "en-us": "OK", "zh-cn": "成功", "code": "200" }, "data": { "content": "{HOSTNAME}", "path": "/etc/hostname", "id": 1, "os_init_id": 3 } } ``` 实例初始化操作 信息字段描述参见 [获取初始化操作列表](#获取初始化操作列表) ## 删除实例初始化操作 > 删除指定 id 的实例初始化操作 ```http DELETE https://$domain /api/os_init_write/{id} ``` | 参数名称 | 必须 | 类型 | 说明 | |:--------|:---:|:------:|:--------------------| | id | Y | Number | 实例初始化操作的id。 | 响应示例 ```json { "state": { "en-us": "OK", "zh-cn": "成功", "code": "200" } } ``` [返回上一级](../README.md) =====================