🎹 个人简介:大家好,我是 金鱼哥,CSDN运维领域新星创作者,华为云·云享专家 📚个人资质: CCNA、HCNP、CSNA(网络分析师),软考初级、中级网络工程师、RHCSA、RHCE、RHCA、RHCI、ITIL 😜 💬格言:努力不一定成功,但要想成功就必须努力🔥
🎈支持我:可点赞👍、可收藏⭐️、可留言📝
Red Hat Ansible Engine可以与服务提供的任何HTTP API交互,包括RESTful API。由于各种原因,可能需要这种交互。例如,该服务可能位于运行Ansible托管系统的网络的外部,可能没有特定的Ansible模块来与该服务交互,或者Ansible模块可能没有公开所需的功能。
为了访问这些api, Ansible提供了uri模块。该模块连接到一个给定的URL,控制连接的参数并对响应进行操作。唯一需要的参数是url,表示要连接的HTTP或HTTPS完整url。
这是一个使用uri模块的非常简单的示例任务:
- name: Check that the page is reachable and returns a status 200 using GET url: http://www.example.com 但是,通常必须为Ansible模块指定method参数,该参数用于指定用于连接到服务器的HTTP方法。method参数最method的选项是: 📑GET 方法从由请求的URL标识的服务获取实体。这是默认值。 📑POST 请求服务将请求体中包含的实体存储在URL所标识的资源下。 📑PUT 请求服务将在请求体中发送的实体存储为URL标识的资源,如果存在则修改它。 📑DELETE 删除由请求的URL标识的服务中的实体。 📑PATCH 用正文中的值修改由请求URL标识的实体。只有修改后的值必须在主体中。 控制如何连接到服务的下一个选项使用headers参数。此参数是一个字典,可以将自定义HTTP头添加到请求中。例如: headers: Cookie: type=Test 下面是一个更高级的示例,使用到目前为止介绍的参数: - name: Get an entity and set a Cookie uri: url: https://example.com/entity/1 method: GET headers: Cookie: type=TEST 📜11.2.2 将信息发送到API 既然知道了如何调用API,就可以开始向任何API发送信息了。发送此信息有两个互斥的参数:src和body。 src选项指向一个包含您想要发出的HTTP请求主体的文件。或者,您可以使用body选项,它用YAML语法在剧本中定义HTTP请求的正文。 根据接收服务期望的格式,您可能需要使用参数body_format。该参数的选项有:raw、json和form-urlencoded。对于REST api,使用json, 对于传统的基于表单的页面,使用form-urlencoded。 例如,登录到一个服务可以通过以下方法实现: - name: Login to a form-based webpage uri: url: https://example.com/login.php method: POST body_format: form-urlencoded body: name: your_username password: your_password enter: Sign in 📜11.2.3 处理API的响应 任何HTTP服务返回的第一种信息是响应的状态代码。使用status _code选项告诉uri模块您期望成功时的状态代码。如果响应中的状态码不同,任务将失败。 其次,您必须处理响应本身。 如果您想将响应保存为一个文件,请使用dest参数指定该文件。 要在剧本中使用响应,请使用return_content选项来指示应该将响应体添加到结果字典中。使用register将其保存在一个变量中。 这里你可以看到一个如何使用请求响应的例子: - name: Check the contents of the response uri: url: http://www.example.com return_content: yes register: response failed_when: "'SUCCESS' not in response.content" 下面是另一个实际示例,它将GitLab APlv4调用返回的数据解析为Ansible中的变量。变量my_private_ token是在GitLab接口中设置的个人访问令牌,可能是从Ansible Vault保护的文件加载到剧本中。API调用返回的JSON是一个字典列表,其中每个字典包含一个用户的信息:关键用户名包含用户的用户名。 📜11.2.4 HTTP安全性设置 uri模块还支持Digest,、Basic或WSSE身份验证,可以通过使用url_username和url_password参数来控制。如果远程服务支持基本身份验证,但此模块身份验证失败,则使用force_basic_auth参数尝试强制基本身份验证。 一个更安全的选项是使用私钥建立到服务器的安全连接。使用client_cert参数参考PEM证书链文件。如果证书链文件不包含密钥,则使用client_key参数将模块指向存储密钥的文件。 最后,如果必须避免TLS证书验证,则将validate_certs参数设置为false。此设置会降低连接的安全性。 📜11.2.5 使用过滤器准备和解析数据 在前面的章节中,您已经看到了如何使用过滤器来转换数据。在处理HTTP和REST api时,有几个过滤器非常有用。 url支持US-ASCIl字符集的一个有限子集。要确保URL被正确编码,请使用urlencode过滤器。 to_json和from_json过滤器在封送数据到API和从API封送数据时也很有用。 xml模块还可以与过滤器一起用于处理来自某些API的数据。 📜11.2.6 课本练习 [student@workstation ~]$ lab api-interaction start 📑1. 按要求拉取实验代码。 [student@workstation ~]$ cd git-repos/ [student@workstation git-repos]$ git clone http://git.lab.example.com:8081/git/api-interaction.git [student@workstation git-repos]$ cd api-interaction 📑2. 查看对应的清单文件 [student@workstation api-interaction]$ cat inventory.yml tower: # 主机组 hosts: tower.lab.example.com: vars: template_name: DEV ftpservers setup # 已存在模板的名称 copy_template_name: Exact copy of DEV ftpservers setup # 要创建的模板的名称 tower_fqdn: tower.lab.example.com # API URL tower_user: admin tower_password: redhat 📑3. 修改tower_copy_template.yml 剧本。 添加任务以复制和启动作业模板。为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_copy_template.yml . [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml --syntax-check playbook: tower_copy_template.yml [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml tower_copy_template.yml 的剧本不是幂等的。如果出现错误,模板被错误地创建了,请在再次运行修正后的剧本之前删除模板。 📑4. 修改tower_add_survey.yml剧本将一个调查添加到作业模板并激活它。 为了方便,可以在~/DO447/solutions/api-interaction/ 目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_add_survey.yml . cp: overwrite './tower_add_survey.yml'? y '/home/student/DO447/solutions/api-interaction/tower_add_survey.yml' -> './tower_add_survey.yml' [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --syntax-check playbook: tower_add_survey.yml [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml PLAY [Using the uri module to add a survey] ************************************************** TASK [Add a survey to the existing Job Template using the uri module] ************************* ok: [tower.lab.example.com] TASK [Enable the survey] *************************************************************** ok: [tower.lab.example.com] PLAY RECAP ***************************************************************************** tower.lab.example.com : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --tags with_variable 📑5. 修改tower_template_cleanup.yml剧本删除复制的模板。 为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_template_cleanup.yml . cp: overwrite './tower_template_cleanup.yml'? y '/home/student/DO447/solutions/api-interaction/tower_template_cleanup.yml' -> './tower_template_cleanup.yml' [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml --syntax-check playbook: tower_template_cleanup.yml [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml 📑6. 更新代码。 [student@workstation api-interaction]$ git add . [student@workstation api-interaction]$ git commit -m "Tower API interaction" [student@workstation api-interaction]$ git push 📑7. 清空实验 [student@workstation ~]$ lab api-interaction finish 📜11.3 章节实验 [student@workstation ~]$ lab api-review start 📑1. 拉取实验代码。 [student@workstation ~]$ cd /home/student/git-repos [student@workstation git-repos]$ git clone \ http://git.lab.example.com:8081/git/api-review.git [student@workstation git-repos]$ cd api-review 📑2. 按要求,创建模板副本。 使用Ansible uri模块,使用Ansible Tower REST API创建一个现有的New模板Job模板的副本。要创建剧本,请使用本课程中的变量、过滤器和任何其他适用的Ansible最佳实践。 使用以下名称和位置来修改现有的剧本和清单。注意,名称是区分大小写的。 [student@workstation api-review]$ vim inventory.yml tower: hosts: tower.lab.example.com: vars: template_name: New template copy_template_name: Review template tower_fqdn: tower.lab.example.com tower_user: simon tower_password: redhat123 [student@workstation api-review]$ vim copy_template.yml - name: Using the uri module to connect to tower hosts: tower gather_facts: false tasks: - name: Copy the existing New template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/copy/" validate_certs: no method: POST return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: [201, 202] body: name: "{{ copy_template_name }}" body_format: json 📑3. 执行剧本。 [student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
- name: Check that the page is reachable and returns a status 200 using GET url: http://www.example.com 但是,通常必须为Ansible模块指定method参数,该参数用于指定用于连接到服务器的HTTP方法。method参数最method的选项是:
但是,通常必须为Ansible模块指定method参数,该参数用于指定用于连接到服务器的HTTP方法。method参数最method的选项是:
📑GET 方法从由请求的URL标识的服务获取实体。这是默认值。 📑POST 请求服务将请求体中包含的实体存储在URL所标识的资源下。 📑PUT 请求服务将在请求体中发送的实体存储为URL标识的资源,如果存在则修改它。 📑DELETE 删除由请求的URL标识的服务中的实体。 📑PATCH 用正文中的值修改由请求URL标识的实体。只有修改后的值必须在主体中。 控制如何连接到服务的下一个选项使用headers参数。此参数是一个字典,可以将自定义HTTP头添加到请求中。例如: headers: Cookie: type=Test 下面是一个更高级的示例,使用到目前为止介绍的参数: - name: Get an entity and set a Cookie uri: url: https://example.com/entity/1 method: GET headers: Cookie: type=TEST 📜11.2.2 将信息发送到API 既然知道了如何调用API,就可以开始向任何API发送信息了。发送此信息有两个互斥的参数:src和body。 src选项指向一个包含您想要发出的HTTP请求主体的文件。或者,您可以使用body选项,它用YAML语法在剧本中定义HTTP请求的正文。 根据接收服务期望的格式,您可能需要使用参数body_format。该参数的选项有:raw、json和form-urlencoded。对于REST api,使用json, 对于传统的基于表单的页面,使用form-urlencoded。 例如,登录到一个服务可以通过以下方法实现: - name: Login to a form-based webpage uri: url: https://example.com/login.php method: POST body_format: form-urlencoded body: name: your_username password: your_password enter: Sign in 📜11.2.3 处理API的响应 任何HTTP服务返回的第一种信息是响应的状态代码。使用status _code选项告诉uri模块您期望成功时的状态代码。如果响应中的状态码不同,任务将失败。 其次,您必须处理响应本身。 如果您想将响应保存为一个文件,请使用dest参数指定该文件。 要在剧本中使用响应,请使用return_content选项来指示应该将响应体添加到结果字典中。使用register将其保存在一个变量中。 这里你可以看到一个如何使用请求响应的例子: - name: Check the contents of the response uri: url: http://www.example.com return_content: yes register: response failed_when: "'SUCCESS' not in response.content" 下面是另一个实际示例,它将GitLab APlv4调用返回的数据解析为Ansible中的变量。变量my_private_ token是在GitLab接口中设置的个人访问令牌,可能是从Ansible Vault保护的文件加载到剧本中。API调用返回的JSON是一个字典列表,其中每个字典包含一个用户的信息:关键用户名包含用户的用户名。 📜11.2.4 HTTP安全性设置 uri模块还支持Digest,、Basic或WSSE身份验证,可以通过使用url_username和url_password参数来控制。如果远程服务支持基本身份验证,但此模块身份验证失败,则使用force_basic_auth参数尝试强制基本身份验证。 一个更安全的选项是使用私钥建立到服务器的安全连接。使用client_cert参数参考PEM证书链文件。如果证书链文件不包含密钥,则使用client_key参数将模块指向存储密钥的文件。 最后,如果必须避免TLS证书验证,则将validate_certs参数设置为false。此设置会降低连接的安全性。 📜11.2.5 使用过滤器准备和解析数据 在前面的章节中,您已经看到了如何使用过滤器来转换数据。在处理HTTP和REST api时,有几个过滤器非常有用。 url支持US-ASCIl字符集的一个有限子集。要确保URL被正确编码,请使用urlencode过滤器。 to_json和from_json过滤器在封送数据到API和从API封送数据时也很有用。 xml模块还可以与过滤器一起用于处理来自某些API的数据。 📜11.2.6 课本练习 [student@workstation ~]$ lab api-interaction start 📑1. 按要求拉取实验代码。 [student@workstation ~]$ cd git-repos/ [student@workstation git-repos]$ git clone http://git.lab.example.com:8081/git/api-interaction.git [student@workstation git-repos]$ cd api-interaction 📑2. 查看对应的清单文件 [student@workstation api-interaction]$ cat inventory.yml tower: # 主机组 hosts: tower.lab.example.com: vars: template_name: DEV ftpservers setup # 已存在模板的名称 copy_template_name: Exact copy of DEV ftpservers setup # 要创建的模板的名称 tower_fqdn: tower.lab.example.com # API URL tower_user: admin tower_password: redhat 📑3. 修改tower_copy_template.yml 剧本。 添加任务以复制和启动作业模板。为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_copy_template.yml . [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml --syntax-check playbook: tower_copy_template.yml [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml tower_copy_template.yml 的剧本不是幂等的。如果出现错误,模板被错误地创建了,请在再次运行修正后的剧本之前删除模板。 📑4. 修改tower_add_survey.yml剧本将一个调查添加到作业模板并激活它。 为了方便,可以在~/DO447/solutions/api-interaction/ 目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_add_survey.yml . cp: overwrite './tower_add_survey.yml'? y '/home/student/DO447/solutions/api-interaction/tower_add_survey.yml' -> './tower_add_survey.yml' [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --syntax-check playbook: tower_add_survey.yml [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml PLAY [Using the uri module to add a survey] ************************************************** TASK [Add a survey to the existing Job Template using the uri module] ************************* ok: [tower.lab.example.com] TASK [Enable the survey] *************************************************************** ok: [tower.lab.example.com] PLAY RECAP ***************************************************************************** tower.lab.example.com : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --tags with_variable 📑5. 修改tower_template_cleanup.yml剧本删除复制的模板。 为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_template_cleanup.yml . cp: overwrite './tower_template_cleanup.yml'? y '/home/student/DO447/solutions/api-interaction/tower_template_cleanup.yml' -> './tower_template_cleanup.yml' [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml --syntax-check playbook: tower_template_cleanup.yml [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml 📑6. 更新代码。 [student@workstation api-interaction]$ git add . [student@workstation api-interaction]$ git commit -m "Tower API interaction" [student@workstation api-interaction]$ git push 📑7. 清空实验 [student@workstation ~]$ lab api-interaction finish 📜11.3 章节实验 [student@workstation ~]$ lab api-review start 📑1. 拉取实验代码。 [student@workstation ~]$ cd /home/student/git-repos [student@workstation git-repos]$ git clone \ http://git.lab.example.com:8081/git/api-review.git [student@workstation git-repos]$ cd api-review 📑2. 按要求,创建模板副本。 使用Ansible uri模块,使用Ansible Tower REST API创建一个现有的New模板Job模板的副本。要创建剧本,请使用本课程中的变量、过滤器和任何其他适用的Ansible最佳实践。 使用以下名称和位置来修改现有的剧本和清单。注意,名称是区分大小写的。 [student@workstation api-review]$ vim inventory.yml tower: hosts: tower.lab.example.com: vars: template_name: New template copy_template_name: Review template tower_fqdn: tower.lab.example.com tower_user: simon tower_password: redhat123 [student@workstation api-review]$ vim copy_template.yml - name: Using the uri module to connect to tower hosts: tower gather_facts: false tasks: - name: Copy the existing New template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/copy/" validate_certs: no method: POST return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: [201, 202] body: name: "{{ copy_template_name }}" body_format: json 📑3. 执行剧本。 [student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
方法从由请求的URL标识的服务获取实体。这是默认值。
请求服务将请求体中包含的实体存储在URL所标识的资源下。
请求服务将在请求体中发送的实体存储为URL标识的资源,如果存在则修改它。
删除由请求的URL标识的服务中的实体。
用正文中的值修改由请求URL标识的实体。只有修改后的值必须在主体中。
控制如何连接到服务的下一个选项使用headers参数。此参数是一个字典,可以将自定义HTTP头添加到请求中。例如:
headers: Cookie: type=Test 下面是一个更高级的示例,使用到目前为止介绍的参数: - name: Get an entity and set a Cookie uri: url: https://example.com/entity/1 method: GET headers: Cookie: type=TEST 📜11.2.2 将信息发送到API 既然知道了如何调用API,就可以开始向任何API发送信息了。发送此信息有两个互斥的参数:src和body。 src选项指向一个包含您想要发出的HTTP请求主体的文件。或者,您可以使用body选项,它用YAML语法在剧本中定义HTTP请求的正文。 根据接收服务期望的格式,您可能需要使用参数body_format。该参数的选项有:raw、json和form-urlencoded。对于REST api,使用json, 对于传统的基于表单的页面,使用form-urlencoded。 例如,登录到一个服务可以通过以下方法实现: - name: Login to a form-based webpage uri: url: https://example.com/login.php method: POST body_format: form-urlencoded body: name: your_username password: your_password enter: Sign in 📜11.2.3 处理API的响应 任何HTTP服务返回的第一种信息是响应的状态代码。使用status _code选项告诉uri模块您期望成功时的状态代码。如果响应中的状态码不同,任务将失败。 其次,您必须处理响应本身。 如果您想将响应保存为一个文件,请使用dest参数指定该文件。 要在剧本中使用响应,请使用return_content选项来指示应该将响应体添加到结果字典中。使用register将其保存在一个变量中。 这里你可以看到一个如何使用请求响应的例子: - name: Check the contents of the response uri: url: http://www.example.com return_content: yes register: response failed_when: "'SUCCESS' not in response.content" 下面是另一个实际示例,它将GitLab APlv4调用返回的数据解析为Ansible中的变量。变量my_private_ token是在GitLab接口中设置的个人访问令牌,可能是从Ansible Vault保护的文件加载到剧本中。API调用返回的JSON是一个字典列表,其中每个字典包含一个用户的信息:关键用户名包含用户的用户名。 📜11.2.4 HTTP安全性设置 uri模块还支持Digest,、Basic或WSSE身份验证,可以通过使用url_username和url_password参数来控制。如果远程服务支持基本身份验证,但此模块身份验证失败,则使用force_basic_auth参数尝试强制基本身份验证。 一个更安全的选项是使用私钥建立到服务器的安全连接。使用client_cert参数参考PEM证书链文件。如果证书链文件不包含密钥,则使用client_key参数将模块指向存储密钥的文件。 最后,如果必须避免TLS证书验证,则将validate_certs参数设置为false。此设置会降低连接的安全性。 📜11.2.5 使用过滤器准备和解析数据 在前面的章节中,您已经看到了如何使用过滤器来转换数据。在处理HTTP和REST api时,有几个过滤器非常有用。 url支持US-ASCIl字符集的一个有限子集。要确保URL被正确编码,请使用urlencode过滤器。 to_json和from_json过滤器在封送数据到API和从API封送数据时也很有用。 xml模块还可以与过滤器一起用于处理来自某些API的数据。 📜11.2.6 课本练习 [student@workstation ~]$ lab api-interaction start 📑1. 按要求拉取实验代码。 [student@workstation ~]$ cd git-repos/ [student@workstation git-repos]$ git clone http://git.lab.example.com:8081/git/api-interaction.git [student@workstation git-repos]$ cd api-interaction 📑2. 查看对应的清单文件 [student@workstation api-interaction]$ cat inventory.yml tower: # 主机组 hosts: tower.lab.example.com: vars: template_name: DEV ftpservers setup # 已存在模板的名称 copy_template_name: Exact copy of DEV ftpservers setup # 要创建的模板的名称 tower_fqdn: tower.lab.example.com # API URL tower_user: admin tower_password: redhat 📑3. 修改tower_copy_template.yml 剧本。 添加任务以复制和启动作业模板。为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_copy_template.yml . [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml --syntax-check playbook: tower_copy_template.yml [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml tower_copy_template.yml 的剧本不是幂等的。如果出现错误,模板被错误地创建了,请在再次运行修正后的剧本之前删除模板。 📑4. 修改tower_add_survey.yml剧本将一个调查添加到作业模板并激活它。 为了方便,可以在~/DO447/solutions/api-interaction/ 目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_add_survey.yml . cp: overwrite './tower_add_survey.yml'? y '/home/student/DO447/solutions/api-interaction/tower_add_survey.yml' -> './tower_add_survey.yml' [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --syntax-check playbook: tower_add_survey.yml [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml PLAY [Using the uri module to add a survey] ************************************************** TASK [Add a survey to the existing Job Template using the uri module] ************************* ok: [tower.lab.example.com] TASK [Enable the survey] *************************************************************** ok: [tower.lab.example.com] PLAY RECAP ***************************************************************************** tower.lab.example.com : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --tags with_variable 📑5. 修改tower_template_cleanup.yml剧本删除复制的模板。 为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_template_cleanup.yml . cp: overwrite './tower_template_cleanup.yml'? y '/home/student/DO447/solutions/api-interaction/tower_template_cleanup.yml' -> './tower_template_cleanup.yml' [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml --syntax-check playbook: tower_template_cleanup.yml [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml 📑6. 更新代码。 [student@workstation api-interaction]$ git add . [student@workstation api-interaction]$ git commit -m "Tower API interaction" [student@workstation api-interaction]$ git push 📑7. 清空实验 [student@workstation ~]$ lab api-interaction finish 📜11.3 章节实验 [student@workstation ~]$ lab api-review start 📑1. 拉取实验代码。 [student@workstation ~]$ cd /home/student/git-repos [student@workstation git-repos]$ git clone \ http://git.lab.example.com:8081/git/api-review.git [student@workstation git-repos]$ cd api-review 📑2. 按要求,创建模板副本。 使用Ansible uri模块,使用Ansible Tower REST API创建一个现有的New模板Job模板的副本。要创建剧本,请使用本课程中的变量、过滤器和任何其他适用的Ansible最佳实践。 使用以下名称和位置来修改现有的剧本和清单。注意,名称是区分大小写的。 [student@workstation api-review]$ vim inventory.yml tower: hosts: tower.lab.example.com: vars: template_name: New template copy_template_name: Review template tower_fqdn: tower.lab.example.com tower_user: simon tower_password: redhat123 [student@workstation api-review]$ vim copy_template.yml - name: Using the uri module to connect to tower hosts: tower gather_facts: false tasks: - name: Copy the existing New template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/copy/" validate_certs: no method: POST return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: [201, 202] body: name: "{{ copy_template_name }}" body_format: json 📑3. 执行剧本。 [student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
headers: Cookie: type=Test 下面是一个更高级的示例,使用到目前为止介绍的参数:
下面是一个更高级的示例,使用到目前为止介绍的参数:
- name: Get an entity and set a Cookie uri: url: https://example.com/entity/1 method: GET headers: Cookie: type=TEST 📜11.2.2 将信息发送到API 既然知道了如何调用API,就可以开始向任何API发送信息了。发送此信息有两个互斥的参数:src和body。 src选项指向一个包含您想要发出的HTTP请求主体的文件。或者,您可以使用body选项,它用YAML语法在剧本中定义HTTP请求的正文。 根据接收服务期望的格式,您可能需要使用参数body_format。该参数的选项有:raw、json和form-urlencoded。对于REST api,使用json, 对于传统的基于表单的页面,使用form-urlencoded。 例如,登录到一个服务可以通过以下方法实现: - name: Login to a form-based webpage uri: url: https://example.com/login.php method: POST body_format: form-urlencoded body: name: your_username password: your_password enter: Sign in 📜11.2.3 处理API的响应 任何HTTP服务返回的第一种信息是响应的状态代码。使用status _code选项告诉uri模块您期望成功时的状态代码。如果响应中的状态码不同,任务将失败。 其次,您必须处理响应本身。 如果您想将响应保存为一个文件,请使用dest参数指定该文件。 要在剧本中使用响应,请使用return_content选项来指示应该将响应体添加到结果字典中。使用register将其保存在一个变量中。 这里你可以看到一个如何使用请求响应的例子: - name: Check the contents of the response uri: url: http://www.example.com return_content: yes register: response failed_when: "'SUCCESS' not in response.content" 下面是另一个实际示例,它将GitLab APlv4调用返回的数据解析为Ansible中的变量。变量my_private_ token是在GitLab接口中设置的个人访问令牌,可能是从Ansible Vault保护的文件加载到剧本中。API调用返回的JSON是一个字典列表,其中每个字典包含一个用户的信息:关键用户名包含用户的用户名。 📜11.2.4 HTTP安全性设置 uri模块还支持Digest,、Basic或WSSE身份验证,可以通过使用url_username和url_password参数来控制。如果远程服务支持基本身份验证,但此模块身份验证失败,则使用force_basic_auth参数尝试强制基本身份验证。 一个更安全的选项是使用私钥建立到服务器的安全连接。使用client_cert参数参考PEM证书链文件。如果证书链文件不包含密钥,则使用client_key参数将模块指向存储密钥的文件。 最后,如果必须避免TLS证书验证,则将validate_certs参数设置为false。此设置会降低连接的安全性。 📜11.2.5 使用过滤器准备和解析数据 在前面的章节中,您已经看到了如何使用过滤器来转换数据。在处理HTTP和REST api时,有几个过滤器非常有用。 url支持US-ASCIl字符集的一个有限子集。要确保URL被正确编码,请使用urlencode过滤器。 to_json和from_json过滤器在封送数据到API和从API封送数据时也很有用。 xml模块还可以与过滤器一起用于处理来自某些API的数据。 📜11.2.6 课本练习 [student@workstation ~]$ lab api-interaction start 📑1. 按要求拉取实验代码。 [student@workstation ~]$ cd git-repos/ [student@workstation git-repos]$ git clone http://git.lab.example.com:8081/git/api-interaction.git [student@workstation git-repos]$ cd api-interaction 📑2. 查看对应的清单文件 [student@workstation api-interaction]$ cat inventory.yml tower: # 主机组 hosts: tower.lab.example.com: vars: template_name: DEV ftpservers setup # 已存在模板的名称 copy_template_name: Exact copy of DEV ftpservers setup # 要创建的模板的名称 tower_fqdn: tower.lab.example.com # API URL tower_user: admin tower_password: redhat 📑3. 修改tower_copy_template.yml 剧本。 添加任务以复制和启动作业模板。为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_copy_template.yml . [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml --syntax-check playbook: tower_copy_template.yml [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml tower_copy_template.yml 的剧本不是幂等的。如果出现错误,模板被错误地创建了,请在再次运行修正后的剧本之前删除模板。 📑4. 修改tower_add_survey.yml剧本将一个调查添加到作业模板并激活它。 为了方便,可以在~/DO447/solutions/api-interaction/ 目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_add_survey.yml . cp: overwrite './tower_add_survey.yml'? y '/home/student/DO447/solutions/api-interaction/tower_add_survey.yml' -> './tower_add_survey.yml' [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --syntax-check playbook: tower_add_survey.yml [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml PLAY [Using the uri module to add a survey] ************************************************** TASK [Add a survey to the existing Job Template using the uri module] ************************* ok: [tower.lab.example.com] TASK [Enable the survey] *************************************************************** ok: [tower.lab.example.com] PLAY RECAP ***************************************************************************** tower.lab.example.com : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --tags with_variable 📑5. 修改tower_template_cleanup.yml剧本删除复制的模板。 为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_template_cleanup.yml . cp: overwrite './tower_template_cleanup.yml'? y '/home/student/DO447/solutions/api-interaction/tower_template_cleanup.yml' -> './tower_template_cleanup.yml' [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml --syntax-check playbook: tower_template_cleanup.yml [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml 📑6. 更新代码。 [student@workstation api-interaction]$ git add . [student@workstation api-interaction]$ git commit -m "Tower API interaction" [student@workstation api-interaction]$ git push 📑7. 清空实验 [student@workstation ~]$ lab api-interaction finish 📜11.3 章节实验 [student@workstation ~]$ lab api-review start 📑1. 拉取实验代码。 [student@workstation ~]$ cd /home/student/git-repos [student@workstation git-repos]$ git clone \ http://git.lab.example.com:8081/git/api-review.git [student@workstation git-repos]$ cd api-review 📑2. 按要求,创建模板副本。 使用Ansible uri模块,使用Ansible Tower REST API创建一个现有的New模板Job模板的副本。要创建剧本,请使用本课程中的变量、过滤器和任何其他适用的Ansible最佳实践。 使用以下名称和位置来修改现有的剧本和清单。注意,名称是区分大小写的。 [student@workstation api-review]$ vim inventory.yml tower: hosts: tower.lab.example.com: vars: template_name: New template copy_template_name: Review template tower_fqdn: tower.lab.example.com tower_user: simon tower_password: redhat123 [student@workstation api-review]$ vim copy_template.yml - name: Using the uri module to connect to tower hosts: tower gather_facts: false tasks: - name: Copy the existing New template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/copy/" validate_certs: no method: POST return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: [201, 202] body: name: "{{ copy_template_name }}" body_format: json 📑3. 执行剧本。 [student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
- name: Get an entity and set a Cookie uri: url: https://example.com/entity/1 method: GET headers: Cookie: type=TEST
📜11.2.2 将信息发送到API 既然知道了如何调用API,就可以开始向任何API发送信息了。发送此信息有两个互斥的参数:src和body。 src选项指向一个包含您想要发出的HTTP请求主体的文件。或者,您可以使用body选项,它用YAML语法在剧本中定义HTTP请求的正文。 根据接收服务期望的格式,您可能需要使用参数body_format。该参数的选项有:raw、json和form-urlencoded。对于REST api,使用json, 对于传统的基于表单的页面,使用form-urlencoded。 例如,登录到一个服务可以通过以下方法实现: - name: Login to a form-based webpage uri: url: https://example.com/login.php method: POST body_format: form-urlencoded body: name: your_username password: your_password enter: Sign in 📜11.2.3 处理API的响应 任何HTTP服务返回的第一种信息是响应的状态代码。使用status _code选项告诉uri模块您期望成功时的状态代码。如果响应中的状态码不同,任务将失败。 其次,您必须处理响应本身。 如果您想将响应保存为一个文件,请使用dest参数指定该文件。 要在剧本中使用响应,请使用return_content选项来指示应该将响应体添加到结果字典中。使用register将其保存在一个变量中。 这里你可以看到一个如何使用请求响应的例子: - name: Check the contents of the response uri: url: http://www.example.com return_content: yes register: response failed_when: "'SUCCESS' not in response.content" 下面是另一个实际示例,它将GitLab APlv4调用返回的数据解析为Ansible中的变量。变量my_private_ token是在GitLab接口中设置的个人访问令牌,可能是从Ansible Vault保护的文件加载到剧本中。API调用返回的JSON是一个字典列表,其中每个字典包含一个用户的信息:关键用户名包含用户的用户名。 📜11.2.4 HTTP安全性设置 uri模块还支持Digest,、Basic或WSSE身份验证,可以通过使用url_username和url_password参数来控制。如果远程服务支持基本身份验证,但此模块身份验证失败,则使用force_basic_auth参数尝试强制基本身份验证。 一个更安全的选项是使用私钥建立到服务器的安全连接。使用client_cert参数参考PEM证书链文件。如果证书链文件不包含密钥,则使用client_key参数将模块指向存储密钥的文件。 最后,如果必须避免TLS证书验证,则将validate_certs参数设置为false。此设置会降低连接的安全性。 📜11.2.5 使用过滤器准备和解析数据 在前面的章节中,您已经看到了如何使用过滤器来转换数据。在处理HTTP和REST api时,有几个过滤器非常有用。 url支持US-ASCIl字符集的一个有限子集。要确保URL被正确编码,请使用urlencode过滤器。 to_json和from_json过滤器在封送数据到API和从API封送数据时也很有用。 xml模块还可以与过滤器一起用于处理来自某些API的数据。 📜11.2.6 课本练习 [student@workstation ~]$ lab api-interaction start 📑1. 按要求拉取实验代码。 [student@workstation ~]$ cd git-repos/ [student@workstation git-repos]$ git clone http://git.lab.example.com:8081/git/api-interaction.git [student@workstation git-repos]$ cd api-interaction 📑2. 查看对应的清单文件 [student@workstation api-interaction]$ cat inventory.yml tower: # 主机组 hosts: tower.lab.example.com: vars: template_name: DEV ftpservers setup # 已存在模板的名称 copy_template_name: Exact copy of DEV ftpservers setup # 要创建的模板的名称 tower_fqdn: tower.lab.example.com # API URL tower_user: admin tower_password: redhat 📑3. 修改tower_copy_template.yml 剧本。 添加任务以复制和启动作业模板。为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_copy_template.yml . [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml --syntax-check playbook: tower_copy_template.yml [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml tower_copy_template.yml 的剧本不是幂等的。如果出现错误,模板被错误地创建了,请在再次运行修正后的剧本之前删除模板。 📑4. 修改tower_add_survey.yml剧本将一个调查添加到作业模板并激活它。 为了方便,可以在~/DO447/solutions/api-interaction/ 目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_add_survey.yml . cp: overwrite './tower_add_survey.yml'? y '/home/student/DO447/solutions/api-interaction/tower_add_survey.yml' -> './tower_add_survey.yml' [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --syntax-check playbook: tower_add_survey.yml [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml PLAY [Using the uri module to add a survey] ************************************************** TASK [Add a survey to the existing Job Template using the uri module] ************************* ok: [tower.lab.example.com] TASK [Enable the survey] *************************************************************** ok: [tower.lab.example.com] PLAY RECAP ***************************************************************************** tower.lab.example.com : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --tags with_variable 📑5. 修改tower_template_cleanup.yml剧本删除复制的模板。 为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_template_cleanup.yml . cp: overwrite './tower_template_cleanup.yml'? y '/home/student/DO447/solutions/api-interaction/tower_template_cleanup.yml' -> './tower_template_cleanup.yml' [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml --syntax-check playbook: tower_template_cleanup.yml [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml 📑6. 更新代码。 [student@workstation api-interaction]$ git add . [student@workstation api-interaction]$ git commit -m "Tower API interaction" [student@workstation api-interaction]$ git push 📑7. 清空实验 [student@workstation ~]$ lab api-interaction finish 📜11.3 章节实验 [student@workstation ~]$ lab api-review start 📑1. 拉取实验代码。 [student@workstation ~]$ cd /home/student/git-repos [student@workstation git-repos]$ git clone \ http://git.lab.example.com:8081/git/api-review.git [student@workstation git-repos]$ cd api-review 📑2. 按要求,创建模板副本。 使用Ansible uri模块,使用Ansible Tower REST API创建一个现有的New模板Job模板的副本。要创建剧本,请使用本课程中的变量、过滤器和任何其他适用的Ansible最佳实践。 使用以下名称和位置来修改现有的剧本和清单。注意,名称是区分大小写的。 [student@workstation api-review]$ vim inventory.yml tower: hosts: tower.lab.example.com: vars: template_name: New template copy_template_name: Review template tower_fqdn: tower.lab.example.com tower_user: simon tower_password: redhat123 [student@workstation api-review]$ vim copy_template.yml - name: Using the uri module to connect to tower hosts: tower gather_facts: false tasks: - name: Copy the existing New template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/copy/" validate_certs: no method: POST return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: [201, 202] body: name: "{{ copy_template_name }}" body_format: json 📑3. 执行剧本。 [student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
既然知道了如何调用API,就可以开始向任何API发送信息了。发送此信息有两个互斥的参数:src和body。
src选项指向一个包含您想要发出的HTTP请求主体的文件。或者,您可以使用body选项,它用YAML语法在剧本中定义HTTP请求的正文。
根据接收服务期望的格式,您可能需要使用参数body_format。该参数的选项有:raw、json和form-urlencoded。对于REST api,使用json, 对于传统的基于表单的页面,使用form-urlencoded。
例如,登录到一个服务可以通过以下方法实现:
- name: Login to a form-based webpage uri: url: https://example.com/login.php method: POST body_format: form-urlencoded body: name: your_username password: your_password enter: Sign in 📜11.2.3 处理API的响应 任何HTTP服务返回的第一种信息是响应的状态代码。使用status _code选项告诉uri模块您期望成功时的状态代码。如果响应中的状态码不同,任务将失败。 其次,您必须处理响应本身。 如果您想将响应保存为一个文件,请使用dest参数指定该文件。 要在剧本中使用响应,请使用return_content选项来指示应该将响应体添加到结果字典中。使用register将其保存在一个变量中。 这里你可以看到一个如何使用请求响应的例子: - name: Check the contents of the response uri: url: http://www.example.com return_content: yes register: response failed_when: "'SUCCESS' not in response.content" 下面是另一个实际示例,它将GitLab APlv4调用返回的数据解析为Ansible中的变量。变量my_private_ token是在GitLab接口中设置的个人访问令牌,可能是从Ansible Vault保护的文件加载到剧本中。API调用返回的JSON是一个字典列表,其中每个字典包含一个用户的信息:关键用户名包含用户的用户名。 📜11.2.4 HTTP安全性设置 uri模块还支持Digest,、Basic或WSSE身份验证,可以通过使用url_username和url_password参数来控制。如果远程服务支持基本身份验证,但此模块身份验证失败,则使用force_basic_auth参数尝试强制基本身份验证。 一个更安全的选项是使用私钥建立到服务器的安全连接。使用client_cert参数参考PEM证书链文件。如果证书链文件不包含密钥,则使用client_key参数将模块指向存储密钥的文件。 最后,如果必须避免TLS证书验证,则将validate_certs参数设置为false。此设置会降低连接的安全性。 📜11.2.5 使用过滤器准备和解析数据 在前面的章节中,您已经看到了如何使用过滤器来转换数据。在处理HTTP和REST api时,有几个过滤器非常有用。 url支持US-ASCIl字符集的一个有限子集。要确保URL被正确编码,请使用urlencode过滤器。 to_json和from_json过滤器在封送数据到API和从API封送数据时也很有用。 xml模块还可以与过滤器一起用于处理来自某些API的数据。 📜11.2.6 课本练习 [student@workstation ~]$ lab api-interaction start 📑1. 按要求拉取实验代码。 [student@workstation ~]$ cd git-repos/ [student@workstation git-repos]$ git clone http://git.lab.example.com:8081/git/api-interaction.git [student@workstation git-repos]$ cd api-interaction 📑2. 查看对应的清单文件 [student@workstation api-interaction]$ cat inventory.yml tower: # 主机组 hosts: tower.lab.example.com: vars: template_name: DEV ftpservers setup # 已存在模板的名称 copy_template_name: Exact copy of DEV ftpservers setup # 要创建的模板的名称 tower_fqdn: tower.lab.example.com # API URL tower_user: admin tower_password: redhat 📑3. 修改tower_copy_template.yml 剧本。 添加任务以复制和启动作业模板。为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_copy_template.yml . [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml --syntax-check playbook: tower_copy_template.yml [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml tower_copy_template.yml 的剧本不是幂等的。如果出现错误,模板被错误地创建了,请在再次运行修正后的剧本之前删除模板。 📑4. 修改tower_add_survey.yml剧本将一个调查添加到作业模板并激活它。 为了方便,可以在~/DO447/solutions/api-interaction/ 目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_add_survey.yml . cp: overwrite './tower_add_survey.yml'? y '/home/student/DO447/solutions/api-interaction/tower_add_survey.yml' -> './tower_add_survey.yml' [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --syntax-check playbook: tower_add_survey.yml [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml PLAY [Using the uri module to add a survey] ************************************************** TASK [Add a survey to the existing Job Template using the uri module] ************************* ok: [tower.lab.example.com] TASK [Enable the survey] *************************************************************** ok: [tower.lab.example.com] PLAY RECAP ***************************************************************************** tower.lab.example.com : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --tags with_variable 📑5. 修改tower_template_cleanup.yml剧本删除复制的模板。 为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_template_cleanup.yml . cp: overwrite './tower_template_cleanup.yml'? y '/home/student/DO447/solutions/api-interaction/tower_template_cleanup.yml' -> './tower_template_cleanup.yml' [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml --syntax-check playbook: tower_template_cleanup.yml [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml 📑6. 更新代码。 [student@workstation api-interaction]$ git add . [student@workstation api-interaction]$ git commit -m "Tower API interaction" [student@workstation api-interaction]$ git push 📑7. 清空实验 [student@workstation ~]$ lab api-interaction finish 📜11.3 章节实验 [student@workstation ~]$ lab api-review start 📑1. 拉取实验代码。 [student@workstation ~]$ cd /home/student/git-repos [student@workstation git-repos]$ git clone \ http://git.lab.example.com:8081/git/api-review.git [student@workstation git-repos]$ cd api-review 📑2. 按要求,创建模板副本。 使用Ansible uri模块,使用Ansible Tower REST API创建一个现有的New模板Job模板的副本。要创建剧本,请使用本课程中的变量、过滤器和任何其他适用的Ansible最佳实践。 使用以下名称和位置来修改现有的剧本和清单。注意,名称是区分大小写的。 [student@workstation api-review]$ vim inventory.yml tower: hosts: tower.lab.example.com: vars: template_name: New template copy_template_name: Review template tower_fqdn: tower.lab.example.com tower_user: simon tower_password: redhat123 [student@workstation api-review]$ vim copy_template.yml - name: Using the uri module to connect to tower hosts: tower gather_facts: false tasks: - name: Copy the existing New template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/copy/" validate_certs: no method: POST return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: [201, 202] body: name: "{{ copy_template_name }}" body_format: json 📑3. 执行剧本。 [student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
- name: Login to a form-based webpage uri: url: https://example.com/login.php method: POST body_format: form-urlencoded body: name: your_username password: your_password enter: Sign in
📜11.2.3 处理API的响应 任何HTTP服务返回的第一种信息是响应的状态代码。使用status _code选项告诉uri模块您期望成功时的状态代码。如果响应中的状态码不同,任务将失败。 其次,您必须处理响应本身。 如果您想将响应保存为一个文件,请使用dest参数指定该文件。 要在剧本中使用响应,请使用return_content选项来指示应该将响应体添加到结果字典中。使用register将其保存在一个变量中。 这里你可以看到一个如何使用请求响应的例子: - name: Check the contents of the response uri: url: http://www.example.com return_content: yes register: response failed_when: "'SUCCESS' not in response.content" 下面是另一个实际示例,它将GitLab APlv4调用返回的数据解析为Ansible中的变量。变量my_private_ token是在GitLab接口中设置的个人访问令牌,可能是从Ansible Vault保护的文件加载到剧本中。API调用返回的JSON是一个字典列表,其中每个字典包含一个用户的信息:关键用户名包含用户的用户名。 📜11.2.4 HTTP安全性设置 uri模块还支持Digest,、Basic或WSSE身份验证,可以通过使用url_username和url_password参数来控制。如果远程服务支持基本身份验证,但此模块身份验证失败,则使用force_basic_auth参数尝试强制基本身份验证。 一个更安全的选项是使用私钥建立到服务器的安全连接。使用client_cert参数参考PEM证书链文件。如果证书链文件不包含密钥,则使用client_key参数将模块指向存储密钥的文件。 最后,如果必须避免TLS证书验证,则将validate_certs参数设置为false。此设置会降低连接的安全性。 📜11.2.5 使用过滤器准备和解析数据 在前面的章节中,您已经看到了如何使用过滤器来转换数据。在处理HTTP和REST api时,有几个过滤器非常有用。 url支持US-ASCIl字符集的一个有限子集。要确保URL被正确编码,请使用urlencode过滤器。 to_json和from_json过滤器在封送数据到API和从API封送数据时也很有用。 xml模块还可以与过滤器一起用于处理来自某些API的数据。 📜11.2.6 课本练习 [student@workstation ~]$ lab api-interaction start 📑1. 按要求拉取实验代码。 [student@workstation ~]$ cd git-repos/ [student@workstation git-repos]$ git clone http://git.lab.example.com:8081/git/api-interaction.git [student@workstation git-repos]$ cd api-interaction 📑2. 查看对应的清单文件 [student@workstation api-interaction]$ cat inventory.yml tower: # 主机组 hosts: tower.lab.example.com: vars: template_name: DEV ftpservers setup # 已存在模板的名称 copy_template_name: Exact copy of DEV ftpservers setup # 要创建的模板的名称 tower_fqdn: tower.lab.example.com # API URL tower_user: admin tower_password: redhat 📑3. 修改tower_copy_template.yml 剧本。 添加任务以复制和启动作业模板。为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_copy_template.yml . [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml --syntax-check playbook: tower_copy_template.yml [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml tower_copy_template.yml 的剧本不是幂等的。如果出现错误,模板被错误地创建了,请在再次运行修正后的剧本之前删除模板。 📑4. 修改tower_add_survey.yml剧本将一个调查添加到作业模板并激活它。 为了方便,可以在~/DO447/solutions/api-interaction/ 目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_add_survey.yml . cp: overwrite './tower_add_survey.yml'? y '/home/student/DO447/solutions/api-interaction/tower_add_survey.yml' -> './tower_add_survey.yml' [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --syntax-check playbook: tower_add_survey.yml [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml PLAY [Using the uri module to add a survey] ************************************************** TASK [Add a survey to the existing Job Template using the uri module] ************************* ok: [tower.lab.example.com] TASK [Enable the survey] *************************************************************** ok: [tower.lab.example.com] PLAY RECAP ***************************************************************************** tower.lab.example.com : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --tags with_variable 📑5. 修改tower_template_cleanup.yml剧本删除复制的模板。 为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_template_cleanup.yml . cp: overwrite './tower_template_cleanup.yml'? y '/home/student/DO447/solutions/api-interaction/tower_template_cleanup.yml' -> './tower_template_cleanup.yml' [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml --syntax-check playbook: tower_template_cleanup.yml [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml 📑6. 更新代码。 [student@workstation api-interaction]$ git add . [student@workstation api-interaction]$ git commit -m "Tower API interaction" [student@workstation api-interaction]$ git push 📑7. 清空实验 [student@workstation ~]$ lab api-interaction finish 📜11.3 章节实验 [student@workstation ~]$ lab api-review start 📑1. 拉取实验代码。 [student@workstation ~]$ cd /home/student/git-repos [student@workstation git-repos]$ git clone \ http://git.lab.example.com:8081/git/api-review.git [student@workstation git-repos]$ cd api-review 📑2. 按要求,创建模板副本。 使用Ansible uri模块,使用Ansible Tower REST API创建一个现有的New模板Job模板的副本。要创建剧本,请使用本课程中的变量、过滤器和任何其他适用的Ansible最佳实践。 使用以下名称和位置来修改现有的剧本和清单。注意,名称是区分大小写的。 [student@workstation api-review]$ vim inventory.yml tower: hosts: tower.lab.example.com: vars: template_name: New template copy_template_name: Review template tower_fqdn: tower.lab.example.com tower_user: simon tower_password: redhat123 [student@workstation api-review]$ vim copy_template.yml - name: Using the uri module to connect to tower hosts: tower gather_facts: false tasks: - name: Copy the existing New template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/copy/" validate_certs: no method: POST return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: [201, 202] body: name: "{{ copy_template_name }}" body_format: json 📑3. 执行剧本。 [student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
任何HTTP服务返回的第一种信息是响应的状态代码。使用status _code选项告诉uri模块您期望成功时的状态代码。如果响应中的状态码不同,任务将失败。
其次,您必须处理响应本身。
如果您想将响应保存为一个文件,请使用dest参数指定该文件。
要在剧本中使用响应,请使用return_content选项来指示应该将响应体添加到结果字典中。使用register将其保存在一个变量中。
这里你可以看到一个如何使用请求响应的例子:
- name: Check the contents of the response uri: url: http://www.example.com return_content: yes register: response failed_when: "'SUCCESS' not in response.content" 下面是另一个实际示例,它将GitLab APlv4调用返回的数据解析为Ansible中的变量。变量my_private_ token是在GitLab接口中设置的个人访问令牌,可能是从Ansible Vault保护的文件加载到剧本中。API调用返回的JSON是一个字典列表,其中每个字典包含一个用户的信息:关键用户名包含用户的用户名。 📜11.2.4 HTTP安全性设置 uri模块还支持Digest,、Basic或WSSE身份验证,可以通过使用url_username和url_password参数来控制。如果远程服务支持基本身份验证,但此模块身份验证失败,则使用force_basic_auth参数尝试强制基本身份验证。 一个更安全的选项是使用私钥建立到服务器的安全连接。使用client_cert参数参考PEM证书链文件。如果证书链文件不包含密钥,则使用client_key参数将模块指向存储密钥的文件。 最后,如果必须避免TLS证书验证,则将validate_certs参数设置为false。此设置会降低连接的安全性。 📜11.2.5 使用过滤器准备和解析数据 在前面的章节中,您已经看到了如何使用过滤器来转换数据。在处理HTTP和REST api时,有几个过滤器非常有用。 url支持US-ASCIl字符集的一个有限子集。要确保URL被正确编码,请使用urlencode过滤器。 to_json和from_json过滤器在封送数据到API和从API封送数据时也很有用。 xml模块还可以与过滤器一起用于处理来自某些API的数据。 📜11.2.6 课本练习 [student@workstation ~]$ lab api-interaction start 📑1. 按要求拉取实验代码。 [student@workstation ~]$ cd git-repos/ [student@workstation git-repos]$ git clone http://git.lab.example.com:8081/git/api-interaction.git [student@workstation git-repos]$ cd api-interaction 📑2. 查看对应的清单文件 [student@workstation api-interaction]$ cat inventory.yml tower: # 主机组 hosts: tower.lab.example.com: vars: template_name: DEV ftpservers setup # 已存在模板的名称 copy_template_name: Exact copy of DEV ftpservers setup # 要创建的模板的名称 tower_fqdn: tower.lab.example.com # API URL tower_user: admin tower_password: redhat 📑3. 修改tower_copy_template.yml 剧本。 添加任务以复制和启动作业模板。为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_copy_template.yml . [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml --syntax-check playbook: tower_copy_template.yml [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml tower_copy_template.yml 的剧本不是幂等的。如果出现错误,模板被错误地创建了,请在再次运行修正后的剧本之前删除模板。 📑4. 修改tower_add_survey.yml剧本将一个调查添加到作业模板并激活它。 为了方便,可以在~/DO447/solutions/api-interaction/ 目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_add_survey.yml . cp: overwrite './tower_add_survey.yml'? y '/home/student/DO447/solutions/api-interaction/tower_add_survey.yml' -> './tower_add_survey.yml' [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --syntax-check playbook: tower_add_survey.yml [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml PLAY [Using the uri module to add a survey] ************************************************** TASK [Add a survey to the existing Job Template using the uri module] ************************* ok: [tower.lab.example.com] TASK [Enable the survey] *************************************************************** ok: [tower.lab.example.com] PLAY RECAP ***************************************************************************** tower.lab.example.com : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --tags with_variable 📑5. 修改tower_template_cleanup.yml剧本删除复制的模板。 为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_template_cleanup.yml . cp: overwrite './tower_template_cleanup.yml'? y '/home/student/DO447/solutions/api-interaction/tower_template_cleanup.yml' -> './tower_template_cleanup.yml' [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml --syntax-check playbook: tower_template_cleanup.yml [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml 📑6. 更新代码。 [student@workstation api-interaction]$ git add . [student@workstation api-interaction]$ git commit -m "Tower API interaction" [student@workstation api-interaction]$ git push 📑7. 清空实验 [student@workstation ~]$ lab api-interaction finish 📜11.3 章节实验 [student@workstation ~]$ lab api-review start 📑1. 拉取实验代码。 [student@workstation ~]$ cd /home/student/git-repos [student@workstation git-repos]$ git clone \ http://git.lab.example.com:8081/git/api-review.git [student@workstation git-repos]$ cd api-review 📑2. 按要求,创建模板副本。 使用Ansible uri模块,使用Ansible Tower REST API创建一个现有的New模板Job模板的副本。要创建剧本,请使用本课程中的变量、过滤器和任何其他适用的Ansible最佳实践。 使用以下名称和位置来修改现有的剧本和清单。注意,名称是区分大小写的。 [student@workstation api-review]$ vim inventory.yml tower: hosts: tower.lab.example.com: vars: template_name: New template copy_template_name: Review template tower_fqdn: tower.lab.example.com tower_user: simon tower_password: redhat123 [student@workstation api-review]$ vim copy_template.yml - name: Using the uri module to connect to tower hosts: tower gather_facts: false tasks: - name: Copy the existing New template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/copy/" validate_certs: no method: POST return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: [201, 202] body: name: "{{ copy_template_name }}" body_format: json 📑3. 执行剧本。 [student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
- name: Check the contents of the response uri: url: http://www.example.com return_content: yes register: response failed_when: "'SUCCESS' not in response.content" 下面是另一个实际示例,它将GitLab APlv4调用返回的数据解析为Ansible中的变量。变量my_private_ token是在GitLab接口中设置的个人访问令牌,可能是从Ansible Vault保护的文件加载到剧本中。API调用返回的JSON是一个字典列表,其中每个字典包含一个用户的信息:关键用户名包含用户的用户名。
下面是另一个实际示例,它将GitLab APlv4调用返回的数据解析为Ansible中的变量。变量my_private_ token是在GitLab接口中设置的个人访问令牌,可能是从Ansible Vault保护的文件加载到剧本中。API调用返回的JSON是一个字典列表,其中每个字典包含一个用户的信息:关键用户名包含用户的用户名。
📜11.2.4 HTTP安全性设置 uri模块还支持Digest,、Basic或WSSE身份验证,可以通过使用url_username和url_password参数来控制。如果远程服务支持基本身份验证,但此模块身份验证失败,则使用force_basic_auth参数尝试强制基本身份验证。 一个更安全的选项是使用私钥建立到服务器的安全连接。使用client_cert参数参考PEM证书链文件。如果证书链文件不包含密钥,则使用client_key参数将模块指向存储密钥的文件。 最后,如果必须避免TLS证书验证,则将validate_certs参数设置为false。此设置会降低连接的安全性。 📜11.2.5 使用过滤器准备和解析数据 在前面的章节中,您已经看到了如何使用过滤器来转换数据。在处理HTTP和REST api时,有几个过滤器非常有用。 url支持US-ASCIl字符集的一个有限子集。要确保URL被正确编码,请使用urlencode过滤器。 to_json和from_json过滤器在封送数据到API和从API封送数据时也很有用。 xml模块还可以与过滤器一起用于处理来自某些API的数据。 📜11.2.6 课本练习 [student@workstation ~]$ lab api-interaction start 📑1. 按要求拉取实验代码。 [student@workstation ~]$ cd git-repos/ [student@workstation git-repos]$ git clone http://git.lab.example.com:8081/git/api-interaction.git [student@workstation git-repos]$ cd api-interaction 📑2. 查看对应的清单文件 [student@workstation api-interaction]$ cat inventory.yml tower: # 主机组 hosts: tower.lab.example.com: vars: template_name: DEV ftpservers setup # 已存在模板的名称 copy_template_name: Exact copy of DEV ftpservers setup # 要创建的模板的名称 tower_fqdn: tower.lab.example.com # API URL tower_user: admin tower_password: redhat 📑3. 修改tower_copy_template.yml 剧本。 添加任务以复制和启动作业模板。为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_copy_template.yml . [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml --syntax-check playbook: tower_copy_template.yml [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml tower_copy_template.yml 的剧本不是幂等的。如果出现错误,模板被错误地创建了,请在再次运行修正后的剧本之前删除模板。 📑4. 修改tower_add_survey.yml剧本将一个调查添加到作业模板并激活它。 为了方便,可以在~/DO447/solutions/api-interaction/ 目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_add_survey.yml . cp: overwrite './tower_add_survey.yml'? y '/home/student/DO447/solutions/api-interaction/tower_add_survey.yml' -> './tower_add_survey.yml' [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --syntax-check playbook: tower_add_survey.yml [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml PLAY [Using the uri module to add a survey] ************************************************** TASK [Add a survey to the existing Job Template using the uri module] ************************* ok: [tower.lab.example.com] TASK [Enable the survey] *************************************************************** ok: [tower.lab.example.com] PLAY RECAP ***************************************************************************** tower.lab.example.com : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --tags with_variable 📑5. 修改tower_template_cleanup.yml剧本删除复制的模板。 为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_template_cleanup.yml . cp: overwrite './tower_template_cleanup.yml'? y '/home/student/DO447/solutions/api-interaction/tower_template_cleanup.yml' -> './tower_template_cleanup.yml' [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml --syntax-check playbook: tower_template_cleanup.yml [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml 📑6. 更新代码。 [student@workstation api-interaction]$ git add . [student@workstation api-interaction]$ git commit -m "Tower API interaction" [student@workstation api-interaction]$ git push 📑7. 清空实验 [student@workstation ~]$ lab api-interaction finish 📜11.3 章节实验 [student@workstation ~]$ lab api-review start 📑1. 拉取实验代码。 [student@workstation ~]$ cd /home/student/git-repos [student@workstation git-repos]$ git clone \ http://git.lab.example.com:8081/git/api-review.git [student@workstation git-repos]$ cd api-review 📑2. 按要求,创建模板副本。 使用Ansible uri模块,使用Ansible Tower REST API创建一个现有的New模板Job模板的副本。要创建剧本,请使用本课程中的变量、过滤器和任何其他适用的Ansible最佳实践。 使用以下名称和位置来修改现有的剧本和清单。注意,名称是区分大小写的。 [student@workstation api-review]$ vim inventory.yml tower: hosts: tower.lab.example.com: vars: template_name: New template copy_template_name: Review template tower_fqdn: tower.lab.example.com tower_user: simon tower_password: redhat123 [student@workstation api-review]$ vim copy_template.yml - name: Using the uri module to connect to tower hosts: tower gather_facts: false tasks: - name: Copy the existing New template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/copy/" validate_certs: no method: POST return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: [201, 202] body: name: "{{ copy_template_name }}" body_format: json 📑3. 执行剧本。 [student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
uri模块还支持Digest,、Basic或WSSE身份验证,可以通过使用url_username和url_password参数来控制。如果远程服务支持基本身份验证,但此模块身份验证失败,则使用force_basic_auth参数尝试强制基本身份验证。
一个更安全的选项是使用私钥建立到服务器的安全连接。使用client_cert参数参考PEM证书链文件。如果证书链文件不包含密钥,则使用client_key参数将模块指向存储密钥的文件。
最后,如果必须避免TLS证书验证,则将validate_certs参数设置为false。此设置会降低连接的安全性。
在前面的章节中,您已经看到了如何使用过滤器来转换数据。在处理HTTP和REST api时,有几个过滤器非常有用。
url支持US-ASCIl字符集的一个有限子集。要确保URL被正确编码,请使用urlencode过滤器。
to_json和from_json过滤器在封送数据到API和从API封送数据时也很有用。
xml模块还可以与过滤器一起用于处理来自某些API的数据。
[student@workstation ~]$ lab api-interaction start 📑1. 按要求拉取实验代码。 [student@workstation ~]$ cd git-repos/ [student@workstation git-repos]$ git clone http://git.lab.example.com:8081/git/api-interaction.git [student@workstation git-repos]$ cd api-interaction 📑2. 查看对应的清单文件 [student@workstation api-interaction]$ cat inventory.yml tower: # 主机组 hosts: tower.lab.example.com: vars: template_name: DEV ftpservers setup # 已存在模板的名称 copy_template_name: Exact copy of DEV ftpservers setup # 要创建的模板的名称 tower_fqdn: tower.lab.example.com # API URL tower_user: admin tower_password: redhat 📑3. 修改tower_copy_template.yml 剧本。 添加任务以复制和启动作业模板。为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_copy_template.yml . [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml --syntax-check playbook: tower_copy_template.yml [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml tower_copy_template.yml 的剧本不是幂等的。如果出现错误,模板被错误地创建了,请在再次运行修正后的剧本之前删除模板。 📑4. 修改tower_add_survey.yml剧本将一个调查添加到作业模板并激活它。 为了方便,可以在~/DO447/solutions/api-interaction/ 目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_add_survey.yml . cp: overwrite './tower_add_survey.yml'? y '/home/student/DO447/solutions/api-interaction/tower_add_survey.yml' -> './tower_add_survey.yml' [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --syntax-check playbook: tower_add_survey.yml [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml PLAY [Using the uri module to add a survey] ************************************************** TASK [Add a survey to the existing Job Template using the uri module] ************************* ok: [tower.lab.example.com] TASK [Enable the survey] *************************************************************** ok: [tower.lab.example.com] PLAY RECAP ***************************************************************************** tower.lab.example.com : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --tags with_variable 📑5. 修改tower_template_cleanup.yml剧本删除复制的模板。 为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_template_cleanup.yml . cp: overwrite './tower_template_cleanup.yml'? y '/home/student/DO447/solutions/api-interaction/tower_template_cleanup.yml' -> './tower_template_cleanup.yml' [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml --syntax-check playbook: tower_template_cleanup.yml [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml 📑6. 更新代码。 [student@workstation api-interaction]$ git add . [student@workstation api-interaction]$ git commit -m "Tower API interaction" [student@workstation api-interaction]$ git push 📑7. 清空实验 [student@workstation ~]$ lab api-interaction finish 📜11.3 章节实验 [student@workstation ~]$ lab api-review start 📑1. 拉取实验代码。 [student@workstation ~]$ cd /home/student/git-repos [student@workstation git-repos]$ git clone \ http://git.lab.example.com:8081/git/api-review.git [student@workstation git-repos]$ cd api-review 📑2. 按要求,创建模板副本。 使用Ansible uri模块,使用Ansible Tower REST API创建一个现有的New模板Job模板的副本。要创建剧本,请使用本课程中的变量、过滤器和任何其他适用的Ansible最佳实践。 使用以下名称和位置来修改现有的剧本和清单。注意,名称是区分大小写的。 [student@workstation api-review]$ vim inventory.yml tower: hosts: tower.lab.example.com: vars: template_name: New template copy_template_name: Review template tower_fqdn: tower.lab.example.com tower_user: simon tower_password: redhat123 [student@workstation api-review]$ vim copy_template.yml - name: Using the uri module to connect to tower hosts: tower gather_facts: false tasks: - name: Copy the existing New template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/copy/" validate_certs: no method: POST return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: [201, 202] body: name: "{{ copy_template_name }}" body_format: json 📑3. 执行剧本。 [student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
[student@workstation ~]$ lab api-interaction start
📑1. 按要求拉取实验代码。 [student@workstation ~]$ cd git-repos/ [student@workstation git-repos]$ git clone http://git.lab.example.com:8081/git/api-interaction.git [student@workstation git-repos]$ cd api-interaction 📑2. 查看对应的清单文件 [student@workstation api-interaction]$ cat inventory.yml tower: # 主机组 hosts: tower.lab.example.com: vars: template_name: DEV ftpservers setup # 已存在模板的名称 copy_template_name: Exact copy of DEV ftpservers setup # 要创建的模板的名称 tower_fqdn: tower.lab.example.com # API URL tower_user: admin tower_password: redhat 📑3. 修改tower_copy_template.yml 剧本。 添加任务以复制和启动作业模板。为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_copy_template.yml . [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml --syntax-check playbook: tower_copy_template.yml [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml tower_copy_template.yml 的剧本不是幂等的。如果出现错误,模板被错误地创建了,请在再次运行修正后的剧本之前删除模板。 📑4. 修改tower_add_survey.yml剧本将一个调查添加到作业模板并激活它。 为了方便,可以在~/DO447/solutions/api-interaction/ 目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_add_survey.yml . cp: overwrite './tower_add_survey.yml'? y '/home/student/DO447/solutions/api-interaction/tower_add_survey.yml' -> './tower_add_survey.yml' [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --syntax-check playbook: tower_add_survey.yml [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml PLAY [Using the uri module to add a survey] ************************************************** TASK [Add a survey to the existing Job Template using the uri module] ************************* ok: [tower.lab.example.com] TASK [Enable the survey] *************************************************************** ok: [tower.lab.example.com] PLAY RECAP ***************************************************************************** tower.lab.example.com : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --tags with_variable 📑5. 修改tower_template_cleanup.yml剧本删除复制的模板。 为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_template_cleanup.yml . cp: overwrite './tower_template_cleanup.yml'? y '/home/student/DO447/solutions/api-interaction/tower_template_cleanup.yml' -> './tower_template_cleanup.yml' [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml --syntax-check playbook: tower_template_cleanup.yml [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml 📑6. 更新代码。 [student@workstation api-interaction]$ git add . [student@workstation api-interaction]$ git commit -m "Tower API interaction" [student@workstation api-interaction]$ git push 📑7. 清空实验 [student@workstation ~]$ lab api-interaction finish 📜11.3 章节实验 [student@workstation ~]$ lab api-review start 📑1. 拉取实验代码。 [student@workstation ~]$ cd /home/student/git-repos [student@workstation git-repos]$ git clone \ http://git.lab.example.com:8081/git/api-review.git [student@workstation git-repos]$ cd api-review 📑2. 按要求,创建模板副本。 使用Ansible uri模块,使用Ansible Tower REST API创建一个现有的New模板Job模板的副本。要创建剧本,请使用本课程中的变量、过滤器和任何其他适用的Ansible最佳实践。 使用以下名称和位置来修改现有的剧本和清单。注意,名称是区分大小写的。 [student@workstation api-review]$ vim inventory.yml tower: hosts: tower.lab.example.com: vars: template_name: New template copy_template_name: Review template tower_fqdn: tower.lab.example.com tower_user: simon tower_password: redhat123 [student@workstation api-review]$ vim copy_template.yml - name: Using the uri module to connect to tower hosts: tower gather_facts: false tasks: - name: Copy the existing New template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/copy/" validate_certs: no method: POST return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: [201, 202] body: name: "{{ copy_template_name }}" body_format: json 📑3. 执行剧本。 [student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
[student@workstation ~]$ cd git-repos/ [student@workstation git-repos]$ git clone http://git.lab.example.com:8081/git/api-interaction.git [student@workstation git-repos]$ cd api-interaction 📑2. 查看对应的清单文件 [student@workstation api-interaction]$ cat inventory.yml tower: # 主机组 hosts: tower.lab.example.com: vars: template_name: DEV ftpservers setup # 已存在模板的名称 copy_template_name: Exact copy of DEV ftpservers setup # 要创建的模板的名称 tower_fqdn: tower.lab.example.com # API URL tower_user: admin tower_password: redhat 📑3. 修改tower_copy_template.yml 剧本。 添加任务以复制和启动作业模板。为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_copy_template.yml . [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml --syntax-check playbook: tower_copy_template.yml [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml tower_copy_template.yml 的剧本不是幂等的。如果出现错误,模板被错误地创建了,请在再次运行修正后的剧本之前删除模板。 📑4. 修改tower_add_survey.yml剧本将一个调查添加到作业模板并激活它。 为了方便,可以在~/DO447/solutions/api-interaction/ 目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_add_survey.yml . cp: overwrite './tower_add_survey.yml'? y '/home/student/DO447/solutions/api-interaction/tower_add_survey.yml' -> './tower_add_survey.yml' [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --syntax-check playbook: tower_add_survey.yml [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml PLAY [Using the uri module to add a survey] ************************************************** TASK [Add a survey to the existing Job Template using the uri module] ************************* ok: [tower.lab.example.com] TASK [Enable the survey] *************************************************************** ok: [tower.lab.example.com] PLAY RECAP ***************************************************************************** tower.lab.example.com : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --tags with_variable 📑5. 修改tower_template_cleanup.yml剧本删除复制的模板。 为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_template_cleanup.yml . cp: overwrite './tower_template_cleanup.yml'? y '/home/student/DO447/solutions/api-interaction/tower_template_cleanup.yml' -> './tower_template_cleanup.yml' [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml --syntax-check playbook: tower_template_cleanup.yml [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml 📑6. 更新代码。 [student@workstation api-interaction]$ git add . [student@workstation api-interaction]$ git commit -m "Tower API interaction" [student@workstation api-interaction]$ git push 📑7. 清空实验 [student@workstation ~]$ lab api-interaction finish 📜11.3 章节实验 [student@workstation ~]$ lab api-review start 📑1. 拉取实验代码。 [student@workstation ~]$ cd /home/student/git-repos [student@workstation git-repos]$ git clone \ http://git.lab.example.com:8081/git/api-review.git [student@workstation git-repos]$ cd api-review 📑2. 按要求,创建模板副本。 使用Ansible uri模块,使用Ansible Tower REST API创建一个现有的New模板Job模板的副本。要创建剧本,请使用本课程中的变量、过滤器和任何其他适用的Ansible最佳实践。 使用以下名称和位置来修改现有的剧本和清单。注意,名称是区分大小写的。 [student@workstation api-review]$ vim inventory.yml tower: hosts: tower.lab.example.com: vars: template_name: New template copy_template_name: Review template tower_fqdn: tower.lab.example.com tower_user: simon tower_password: redhat123 [student@workstation api-review]$ vim copy_template.yml - name: Using the uri module to connect to tower hosts: tower gather_facts: false tasks: - name: Copy the existing New template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/copy/" validate_certs: no method: POST return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: [201, 202] body: name: "{{ copy_template_name }}" body_format: json 📑3. 执行剧本。 [student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
[student@workstation ~]$ cd git-repos/ [student@workstation git-repos]$ git clone http://git.lab.example.com:8081/git/api-interaction.git [student@workstation git-repos]$ cd api-interaction
📑2. 查看对应的清单文件 [student@workstation api-interaction]$ cat inventory.yml tower: # 主机组 hosts: tower.lab.example.com: vars: template_name: DEV ftpservers setup # 已存在模板的名称 copy_template_name: Exact copy of DEV ftpservers setup # 要创建的模板的名称 tower_fqdn: tower.lab.example.com # API URL tower_user: admin tower_password: redhat 📑3. 修改tower_copy_template.yml 剧本。 添加任务以复制和启动作业模板。为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_copy_template.yml . [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml --syntax-check playbook: tower_copy_template.yml [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml tower_copy_template.yml 的剧本不是幂等的。如果出现错误,模板被错误地创建了,请在再次运行修正后的剧本之前删除模板。 📑4. 修改tower_add_survey.yml剧本将一个调查添加到作业模板并激活它。 为了方便,可以在~/DO447/solutions/api-interaction/ 目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_add_survey.yml . cp: overwrite './tower_add_survey.yml'? y '/home/student/DO447/solutions/api-interaction/tower_add_survey.yml' -> './tower_add_survey.yml' [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --syntax-check playbook: tower_add_survey.yml [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml PLAY [Using the uri module to add a survey] ************************************************** TASK [Add a survey to the existing Job Template using the uri module] ************************* ok: [tower.lab.example.com] TASK [Enable the survey] *************************************************************** ok: [tower.lab.example.com] PLAY RECAP ***************************************************************************** tower.lab.example.com : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --tags with_variable 📑5. 修改tower_template_cleanup.yml剧本删除复制的模板。 为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_template_cleanup.yml . cp: overwrite './tower_template_cleanup.yml'? y '/home/student/DO447/solutions/api-interaction/tower_template_cleanup.yml' -> './tower_template_cleanup.yml' [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml --syntax-check playbook: tower_template_cleanup.yml [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml 📑6. 更新代码。 [student@workstation api-interaction]$ git add . [student@workstation api-interaction]$ git commit -m "Tower API interaction" [student@workstation api-interaction]$ git push 📑7. 清空实验 [student@workstation ~]$ lab api-interaction finish 📜11.3 章节实验 [student@workstation ~]$ lab api-review start 📑1. 拉取实验代码。 [student@workstation ~]$ cd /home/student/git-repos [student@workstation git-repos]$ git clone \ http://git.lab.example.com:8081/git/api-review.git [student@workstation git-repos]$ cd api-review 📑2. 按要求,创建模板副本。 使用Ansible uri模块,使用Ansible Tower REST API创建一个现有的New模板Job模板的副本。要创建剧本,请使用本课程中的变量、过滤器和任何其他适用的Ansible最佳实践。 使用以下名称和位置来修改现有的剧本和清单。注意,名称是区分大小写的。 [student@workstation api-review]$ vim inventory.yml tower: hosts: tower.lab.example.com: vars: template_name: New template copy_template_name: Review template tower_fqdn: tower.lab.example.com tower_user: simon tower_password: redhat123 [student@workstation api-review]$ vim copy_template.yml - name: Using the uri module to connect to tower hosts: tower gather_facts: false tasks: - name: Copy the existing New template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/copy/" validate_certs: no method: POST return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: [201, 202] body: name: "{{ copy_template_name }}" body_format: json 📑3. 执行剧本。 [student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
[student@workstation api-interaction]$ cat inventory.yml tower: # 主机组 hosts: tower.lab.example.com: vars: template_name: DEV ftpservers setup # 已存在模板的名称 copy_template_name: Exact copy of DEV ftpservers setup # 要创建的模板的名称 tower_fqdn: tower.lab.example.com # API URL tower_user: admin tower_password: redhat 📑3. 修改tower_copy_template.yml 剧本。 添加任务以复制和启动作业模板。为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_copy_template.yml . [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml --syntax-check playbook: tower_copy_template.yml [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml tower_copy_template.yml 的剧本不是幂等的。如果出现错误,模板被错误地创建了,请在再次运行修正后的剧本之前删除模板。 📑4. 修改tower_add_survey.yml剧本将一个调查添加到作业模板并激活它。 为了方便,可以在~/DO447/solutions/api-interaction/ 目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_add_survey.yml . cp: overwrite './tower_add_survey.yml'? y '/home/student/DO447/solutions/api-interaction/tower_add_survey.yml' -> './tower_add_survey.yml' [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --syntax-check playbook: tower_add_survey.yml [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml PLAY [Using the uri module to add a survey] ************************************************** TASK [Add a survey to the existing Job Template using the uri module] ************************* ok: [tower.lab.example.com] TASK [Enable the survey] *************************************************************** ok: [tower.lab.example.com] PLAY RECAP ***************************************************************************** tower.lab.example.com : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --tags with_variable 📑5. 修改tower_template_cleanup.yml剧本删除复制的模板。 为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_template_cleanup.yml . cp: overwrite './tower_template_cleanup.yml'? y '/home/student/DO447/solutions/api-interaction/tower_template_cleanup.yml' -> './tower_template_cleanup.yml' [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml --syntax-check playbook: tower_template_cleanup.yml [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml 📑6. 更新代码。 [student@workstation api-interaction]$ git add . [student@workstation api-interaction]$ git commit -m "Tower API interaction" [student@workstation api-interaction]$ git push 📑7. 清空实验 [student@workstation ~]$ lab api-interaction finish 📜11.3 章节实验 [student@workstation ~]$ lab api-review start 📑1. 拉取实验代码。 [student@workstation ~]$ cd /home/student/git-repos [student@workstation git-repos]$ git clone \ http://git.lab.example.com:8081/git/api-review.git [student@workstation git-repos]$ cd api-review 📑2. 按要求,创建模板副本。 使用Ansible uri模块,使用Ansible Tower REST API创建一个现有的New模板Job模板的副本。要创建剧本,请使用本课程中的变量、过滤器和任何其他适用的Ansible最佳实践。 使用以下名称和位置来修改现有的剧本和清单。注意,名称是区分大小写的。 [student@workstation api-review]$ vim inventory.yml tower: hosts: tower.lab.example.com: vars: template_name: New template copy_template_name: Review template tower_fqdn: tower.lab.example.com tower_user: simon tower_password: redhat123 [student@workstation api-review]$ vim copy_template.yml - name: Using the uri module to connect to tower hosts: tower gather_facts: false tasks: - name: Copy the existing New template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/copy/" validate_certs: no method: POST return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: [201, 202] body: name: "{{ copy_template_name }}" body_format: json 📑3. 执行剧本。 [student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
[student@workstation api-interaction]$ cat inventory.yml tower: # 主机组 hosts: tower.lab.example.com: vars: template_name: DEV ftpservers setup # 已存在模板的名称 copy_template_name: Exact copy of DEV ftpservers setup # 要创建的模板的名称 tower_fqdn: tower.lab.example.com # API URL tower_user: admin tower_password: redhat
📑3. 修改tower_copy_template.yml 剧本。 添加任务以复制和启动作业模板。为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_copy_template.yml . [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml --syntax-check playbook: tower_copy_template.yml [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml tower_copy_template.yml 的剧本不是幂等的。如果出现错误,模板被错误地创建了,请在再次运行修正后的剧本之前删除模板。 📑4. 修改tower_add_survey.yml剧本将一个调查添加到作业模板并激活它。 为了方便,可以在~/DO447/solutions/api-interaction/ 目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_add_survey.yml . cp: overwrite './tower_add_survey.yml'? y '/home/student/DO447/solutions/api-interaction/tower_add_survey.yml' -> './tower_add_survey.yml' [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --syntax-check playbook: tower_add_survey.yml [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml PLAY [Using the uri module to add a survey] ************************************************** TASK [Add a survey to the existing Job Template using the uri module] ************************* ok: [tower.lab.example.com] TASK [Enable the survey] *************************************************************** ok: [tower.lab.example.com] PLAY RECAP ***************************************************************************** tower.lab.example.com : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --tags with_variable 📑5. 修改tower_template_cleanup.yml剧本删除复制的模板。 为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_template_cleanup.yml . cp: overwrite './tower_template_cleanup.yml'? y '/home/student/DO447/solutions/api-interaction/tower_template_cleanup.yml' -> './tower_template_cleanup.yml' [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml --syntax-check playbook: tower_template_cleanup.yml [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml 📑6. 更新代码。 [student@workstation api-interaction]$ git add . [student@workstation api-interaction]$ git commit -m "Tower API interaction" [student@workstation api-interaction]$ git push 📑7. 清空实验 [student@workstation ~]$ lab api-interaction finish 📜11.3 章节实验 [student@workstation ~]$ lab api-review start 📑1. 拉取实验代码。 [student@workstation ~]$ cd /home/student/git-repos [student@workstation git-repos]$ git clone \ http://git.lab.example.com:8081/git/api-review.git [student@workstation git-repos]$ cd api-review 📑2. 按要求,创建模板副本。 使用Ansible uri模块,使用Ansible Tower REST API创建一个现有的New模板Job模板的副本。要创建剧本,请使用本课程中的变量、过滤器和任何其他适用的Ansible最佳实践。 使用以下名称和位置来修改现有的剧本和清单。注意,名称是区分大小写的。 [student@workstation api-review]$ vim inventory.yml tower: hosts: tower.lab.example.com: vars: template_name: New template copy_template_name: Review template tower_fqdn: tower.lab.example.com tower_user: simon tower_password: redhat123 [student@workstation api-review]$ vim copy_template.yml - name: Using the uri module to connect to tower hosts: tower gather_facts: false tasks: - name: Copy the existing New template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/copy/" validate_certs: no method: POST return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: [201, 202] body: name: "{{ copy_template_name }}" body_format: json 📑3. 执行剧本。 [student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
添加任务以复制和启动作业模板。为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。
[student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_copy_template.yml . [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml --syntax-check playbook: tower_copy_template.yml [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml tower_copy_template.yml 的剧本不是幂等的。如果出现错误,模板被错误地创建了,请在再次运行修正后的剧本之前删除模板。 📑4. 修改tower_add_survey.yml剧本将一个调查添加到作业模板并激活它。 为了方便,可以在~/DO447/solutions/api-interaction/ 目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_add_survey.yml . cp: overwrite './tower_add_survey.yml'? y '/home/student/DO447/solutions/api-interaction/tower_add_survey.yml' -> './tower_add_survey.yml' [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --syntax-check playbook: tower_add_survey.yml [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml PLAY [Using the uri module to add a survey] ************************************************** TASK [Add a survey to the existing Job Template using the uri module] ************************* ok: [tower.lab.example.com] TASK [Enable the survey] *************************************************************** ok: [tower.lab.example.com] PLAY RECAP ***************************************************************************** tower.lab.example.com : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --tags with_variable 📑5. 修改tower_template_cleanup.yml剧本删除复制的模板。 为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_template_cleanup.yml . cp: overwrite './tower_template_cleanup.yml'? y '/home/student/DO447/solutions/api-interaction/tower_template_cleanup.yml' -> './tower_template_cleanup.yml' [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml --syntax-check playbook: tower_template_cleanup.yml [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml 📑6. 更新代码。 [student@workstation api-interaction]$ git add . [student@workstation api-interaction]$ git commit -m "Tower API interaction" [student@workstation api-interaction]$ git push 📑7. 清空实验 [student@workstation ~]$ lab api-interaction finish 📜11.3 章节实验 [student@workstation ~]$ lab api-review start 📑1. 拉取实验代码。 [student@workstation ~]$ cd /home/student/git-repos [student@workstation git-repos]$ git clone \ http://git.lab.example.com:8081/git/api-review.git [student@workstation git-repos]$ cd api-review 📑2. 按要求,创建模板副本。 使用Ansible uri模块,使用Ansible Tower REST API创建一个现有的New模板Job模板的副本。要创建剧本,请使用本课程中的变量、过滤器和任何其他适用的Ansible最佳实践。 使用以下名称和位置来修改现有的剧本和清单。注意,名称是区分大小写的。 [student@workstation api-review]$ vim inventory.yml tower: hosts: tower.lab.example.com: vars: template_name: New template copy_template_name: Review template tower_fqdn: tower.lab.example.com tower_user: simon tower_password: redhat123 [student@workstation api-review]$ vim copy_template.yml - name: Using the uri module to connect to tower hosts: tower gather_facts: false tasks: - name: Copy the existing New template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/copy/" validate_certs: no method: POST return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: [201, 202] body: name: "{{ copy_template_name }}" body_format: json 📑3. 执行剧本。 [student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
[student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_copy_template.yml . [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml --syntax-check playbook: tower_copy_template.yml [student@workstation api-interaction]$ ansible-playbook tower_copy_template.yml tower_copy_template.yml 的剧本不是幂等的。如果出现错误,模板被错误地创建了,请在再次运行修正后的剧本之前删除模板。
tower_copy_template.yml 的剧本不是幂等的。如果出现错误,模板被错误地创建了,请在再次运行修正后的剧本之前删除模板。
📑4. 修改tower_add_survey.yml剧本将一个调查添加到作业模板并激活它。 为了方便,可以在~/DO447/solutions/api-interaction/ 目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_add_survey.yml . cp: overwrite './tower_add_survey.yml'? y '/home/student/DO447/solutions/api-interaction/tower_add_survey.yml' -> './tower_add_survey.yml' [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --syntax-check playbook: tower_add_survey.yml [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml PLAY [Using the uri module to add a survey] ************************************************** TASK [Add a survey to the existing Job Template using the uri module] ************************* ok: [tower.lab.example.com] TASK [Enable the survey] *************************************************************** ok: [tower.lab.example.com] PLAY RECAP ***************************************************************************** tower.lab.example.com : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --tags with_variable 📑5. 修改tower_template_cleanup.yml剧本删除复制的模板。 为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_template_cleanup.yml . cp: overwrite './tower_template_cleanup.yml'? y '/home/student/DO447/solutions/api-interaction/tower_template_cleanup.yml' -> './tower_template_cleanup.yml' [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml --syntax-check playbook: tower_template_cleanup.yml [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml 📑6. 更新代码。 [student@workstation api-interaction]$ git add . [student@workstation api-interaction]$ git commit -m "Tower API interaction" [student@workstation api-interaction]$ git push 📑7. 清空实验 [student@workstation ~]$ lab api-interaction finish 📜11.3 章节实验 [student@workstation ~]$ lab api-review start 📑1. 拉取实验代码。 [student@workstation ~]$ cd /home/student/git-repos [student@workstation git-repos]$ git clone \ http://git.lab.example.com:8081/git/api-review.git [student@workstation git-repos]$ cd api-review 📑2. 按要求,创建模板副本。 使用Ansible uri模块,使用Ansible Tower REST API创建一个现有的New模板Job模板的副本。要创建剧本,请使用本课程中的变量、过滤器和任何其他适用的Ansible最佳实践。 使用以下名称和位置来修改现有的剧本和清单。注意,名称是区分大小写的。 [student@workstation api-review]$ vim inventory.yml tower: hosts: tower.lab.example.com: vars: template_name: New template copy_template_name: Review template tower_fqdn: tower.lab.example.com tower_user: simon tower_password: redhat123 [student@workstation api-review]$ vim copy_template.yml - name: Using the uri module to connect to tower hosts: tower gather_facts: false tasks: - name: Copy the existing New template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/copy/" validate_certs: no method: POST return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: [201, 202] body: name: "{{ copy_template_name }}" body_format: json 📑3. 执行剧本。 [student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
为了方便,可以在~/DO447/solutions/api-interaction/ 目录下找到已经编辑过的文件。
[student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_add_survey.yml . cp: overwrite './tower_add_survey.yml'? y '/home/student/DO447/solutions/api-interaction/tower_add_survey.yml' -> './tower_add_survey.yml' [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --syntax-check playbook: tower_add_survey.yml [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml PLAY [Using the uri module to add a survey] ************************************************** TASK [Add a survey to the existing Job Template using the uri module] ************************* ok: [tower.lab.example.com] TASK [Enable the survey] *************************************************************** ok: [tower.lab.example.com] PLAY RECAP ***************************************************************************** tower.lab.example.com : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --tags with_variable 📑5. 修改tower_template_cleanup.yml剧本删除复制的模板。 为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_template_cleanup.yml . cp: overwrite './tower_template_cleanup.yml'? y '/home/student/DO447/solutions/api-interaction/tower_template_cleanup.yml' -> './tower_template_cleanup.yml' [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml --syntax-check playbook: tower_template_cleanup.yml [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml 📑6. 更新代码。 [student@workstation api-interaction]$ git add . [student@workstation api-interaction]$ git commit -m "Tower API interaction" [student@workstation api-interaction]$ git push 📑7. 清空实验 [student@workstation ~]$ lab api-interaction finish 📜11.3 章节实验 [student@workstation ~]$ lab api-review start 📑1. 拉取实验代码。 [student@workstation ~]$ cd /home/student/git-repos [student@workstation git-repos]$ git clone \ http://git.lab.example.com:8081/git/api-review.git [student@workstation git-repos]$ cd api-review 📑2. 按要求,创建模板副本。 使用Ansible uri模块,使用Ansible Tower REST API创建一个现有的New模板Job模板的副本。要创建剧本,请使用本课程中的变量、过滤器和任何其他适用的Ansible最佳实践。 使用以下名称和位置来修改现有的剧本和清单。注意,名称是区分大小写的。 [student@workstation api-review]$ vim inventory.yml tower: hosts: tower.lab.example.com: vars: template_name: New template copy_template_name: Review template tower_fqdn: tower.lab.example.com tower_user: simon tower_password: redhat123 [student@workstation api-review]$ vim copy_template.yml - name: Using the uri module to connect to tower hosts: tower gather_facts: false tasks: - name: Copy the existing New template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/copy/" validate_certs: no method: POST return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: [201, 202] body: name: "{{ copy_template_name }}" body_format: json 📑3. 执行剧本。 [student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
[student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_add_survey.yml . cp: overwrite './tower_add_survey.yml'? y '/home/student/DO447/solutions/api-interaction/tower_add_survey.yml' -> './tower_add_survey.yml' [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --syntax-check playbook: tower_add_survey.yml [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml PLAY [Using the uri module to add a survey] ************************************************** TASK [Add a survey to the existing Job Template using the uri module] ************************* ok: [tower.lab.example.com] TASK [Enable the survey] *************************************************************** ok: [tower.lab.example.com] PLAY RECAP ***************************************************************************** tower.lab.example.com : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 [student@workstation api-interaction]$ ansible-playbook tower_add_survey.yml --tags with_variable
📑5. 修改tower_template_cleanup.yml剧本删除复制的模板。 为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。 [student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_template_cleanup.yml . cp: overwrite './tower_template_cleanup.yml'? y '/home/student/DO447/solutions/api-interaction/tower_template_cleanup.yml' -> './tower_template_cleanup.yml' [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml --syntax-check playbook: tower_template_cleanup.yml [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml 📑6. 更新代码。 [student@workstation api-interaction]$ git add . [student@workstation api-interaction]$ git commit -m "Tower API interaction" [student@workstation api-interaction]$ git push 📑7. 清空实验 [student@workstation ~]$ lab api-interaction finish 📜11.3 章节实验 [student@workstation ~]$ lab api-review start 📑1. 拉取实验代码。 [student@workstation ~]$ cd /home/student/git-repos [student@workstation git-repos]$ git clone \ http://git.lab.example.com:8081/git/api-review.git [student@workstation git-repos]$ cd api-review 📑2. 按要求,创建模板副本。 使用Ansible uri模块,使用Ansible Tower REST API创建一个现有的New模板Job模板的副本。要创建剧本,请使用本课程中的变量、过滤器和任何其他适用的Ansible最佳实践。 使用以下名称和位置来修改现有的剧本和清单。注意,名称是区分大小写的。 [student@workstation api-review]$ vim inventory.yml tower: hosts: tower.lab.example.com: vars: template_name: New template copy_template_name: Review template tower_fqdn: tower.lab.example.com tower_user: simon tower_password: redhat123 [student@workstation api-review]$ vim copy_template.yml - name: Using the uri module to connect to tower hosts: tower gather_facts: false tasks: - name: Copy the existing New template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/copy/" validate_certs: no method: POST return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: [201, 202] body: name: "{{ copy_template_name }}" body_format: json 📑3. 执行剧本。 [student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
为了方便,可以在~/DO447/solutions/api-interaction/目录下找到已经编辑过的文件。
[student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_template_cleanup.yml . cp: overwrite './tower_template_cleanup.yml'? y '/home/student/DO447/solutions/api-interaction/tower_template_cleanup.yml' -> './tower_template_cleanup.yml' [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml --syntax-check playbook: tower_template_cleanup.yml [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml 📑6. 更新代码。 [student@workstation api-interaction]$ git add . [student@workstation api-interaction]$ git commit -m "Tower API interaction" [student@workstation api-interaction]$ git push 📑7. 清空实验 [student@workstation ~]$ lab api-interaction finish 📜11.3 章节实验 [student@workstation ~]$ lab api-review start 📑1. 拉取实验代码。 [student@workstation ~]$ cd /home/student/git-repos [student@workstation git-repos]$ git clone \ http://git.lab.example.com:8081/git/api-review.git [student@workstation git-repos]$ cd api-review 📑2. 按要求,创建模板副本。 使用Ansible uri模块,使用Ansible Tower REST API创建一个现有的New模板Job模板的副本。要创建剧本,请使用本课程中的变量、过滤器和任何其他适用的Ansible最佳实践。 使用以下名称和位置来修改现有的剧本和清单。注意,名称是区分大小写的。 [student@workstation api-review]$ vim inventory.yml tower: hosts: tower.lab.example.com: vars: template_name: New template copy_template_name: Review template tower_fqdn: tower.lab.example.com tower_user: simon tower_password: redhat123 [student@workstation api-review]$ vim copy_template.yml - name: Using the uri module to connect to tower hosts: tower gather_facts: false tasks: - name: Copy the existing New template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/copy/" validate_certs: no method: POST return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: [201, 202] body: name: "{{ copy_template_name }}" body_format: json 📑3. 执行剧本。 [student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
[student@workstation api-interaction]$ cp -iv ~/DO447/solutions/api-interaction/tower_template_cleanup.yml . cp: overwrite './tower_template_cleanup.yml'? y '/home/student/DO447/solutions/api-interaction/tower_template_cleanup.yml' -> './tower_template_cleanup.yml' [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml --syntax-check playbook: tower_template_cleanup.yml [student@workstation api-interaction]$ ansible-playbook tower_template_cleanup.yml
📑6. 更新代码。 [student@workstation api-interaction]$ git add . [student@workstation api-interaction]$ git commit -m "Tower API interaction" [student@workstation api-interaction]$ git push 📑7. 清空实验 [student@workstation ~]$ lab api-interaction finish 📜11.3 章节实验 [student@workstation ~]$ lab api-review start 📑1. 拉取实验代码。 [student@workstation ~]$ cd /home/student/git-repos [student@workstation git-repos]$ git clone \ http://git.lab.example.com:8081/git/api-review.git [student@workstation git-repos]$ cd api-review 📑2. 按要求,创建模板副本。 使用Ansible uri模块,使用Ansible Tower REST API创建一个现有的New模板Job模板的副本。要创建剧本,请使用本课程中的变量、过滤器和任何其他适用的Ansible最佳实践。 使用以下名称和位置来修改现有的剧本和清单。注意,名称是区分大小写的。 [student@workstation api-review]$ vim inventory.yml tower: hosts: tower.lab.example.com: vars: template_name: New template copy_template_name: Review template tower_fqdn: tower.lab.example.com tower_user: simon tower_password: redhat123 [student@workstation api-review]$ vim copy_template.yml - name: Using the uri module to connect to tower hosts: tower gather_facts: false tasks: - name: Copy the existing New template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/copy/" validate_certs: no method: POST return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: [201, 202] body: name: "{{ copy_template_name }}" body_format: json 📑3. 执行剧本。 [student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
[student@workstation api-interaction]$ git add . [student@workstation api-interaction]$ git commit -m "Tower API interaction" [student@workstation api-interaction]$ git push 📑7. 清空实验 [student@workstation ~]$ lab api-interaction finish 📜11.3 章节实验 [student@workstation ~]$ lab api-review start 📑1. 拉取实验代码。 [student@workstation ~]$ cd /home/student/git-repos [student@workstation git-repos]$ git clone \ http://git.lab.example.com:8081/git/api-review.git [student@workstation git-repos]$ cd api-review 📑2. 按要求,创建模板副本。 使用Ansible uri模块,使用Ansible Tower REST API创建一个现有的New模板Job模板的副本。要创建剧本,请使用本课程中的变量、过滤器和任何其他适用的Ansible最佳实践。 使用以下名称和位置来修改现有的剧本和清单。注意,名称是区分大小写的。 [student@workstation api-review]$ vim inventory.yml tower: hosts: tower.lab.example.com: vars: template_name: New template copy_template_name: Review template tower_fqdn: tower.lab.example.com tower_user: simon tower_password: redhat123 [student@workstation api-review]$ vim copy_template.yml - name: Using the uri module to connect to tower hosts: tower gather_facts: false tasks: - name: Copy the existing New template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/copy/" validate_certs: no method: POST return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: [201, 202] body: name: "{{ copy_template_name }}" body_format: json 📑3. 执行剧本。 [student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
[student@workstation api-interaction]$ git add . [student@workstation api-interaction]$ git commit -m "Tower API interaction" [student@workstation api-interaction]$ git push
📑7. 清空实验 [student@workstation ~]$ lab api-interaction finish 📜11.3 章节实验 [student@workstation ~]$ lab api-review start 📑1. 拉取实验代码。 [student@workstation ~]$ cd /home/student/git-repos [student@workstation git-repos]$ git clone \ http://git.lab.example.com:8081/git/api-review.git [student@workstation git-repos]$ cd api-review 📑2. 按要求,创建模板副本。 使用Ansible uri模块,使用Ansible Tower REST API创建一个现有的New模板Job模板的副本。要创建剧本,请使用本课程中的变量、过滤器和任何其他适用的Ansible最佳实践。 使用以下名称和位置来修改现有的剧本和清单。注意,名称是区分大小写的。 [student@workstation api-review]$ vim inventory.yml tower: hosts: tower.lab.example.com: vars: template_name: New template copy_template_name: Review template tower_fqdn: tower.lab.example.com tower_user: simon tower_password: redhat123 [student@workstation api-review]$ vim copy_template.yml - name: Using the uri module to connect to tower hosts: tower gather_facts: false tasks: - name: Copy the existing New template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/copy/" validate_certs: no method: POST return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: [201, 202] body: name: "{{ copy_template_name }}" body_format: json 📑3. 执行剧本。 [student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
[student@workstation ~]$ lab api-interaction finish 📜11.3 章节实验 [student@workstation ~]$ lab api-review start 📑1. 拉取实验代码。 [student@workstation ~]$ cd /home/student/git-repos [student@workstation git-repos]$ git clone \ http://git.lab.example.com:8081/git/api-review.git [student@workstation git-repos]$ cd api-review 📑2. 按要求,创建模板副本。 使用Ansible uri模块,使用Ansible Tower REST API创建一个现有的New模板Job模板的副本。要创建剧本,请使用本课程中的变量、过滤器和任何其他适用的Ansible最佳实践。 使用以下名称和位置来修改现有的剧本和清单。注意,名称是区分大小写的。 [student@workstation api-review]$ vim inventory.yml tower: hosts: tower.lab.example.com: vars: template_name: New template copy_template_name: Review template tower_fqdn: tower.lab.example.com tower_user: simon tower_password: redhat123 [student@workstation api-review]$ vim copy_template.yml - name: Using the uri module to connect to tower hosts: tower gather_facts: false tasks: - name: Copy the existing New template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/copy/" validate_certs: no method: POST return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: [201, 202] body: name: "{{ copy_template_name }}" body_format: json 📑3. 执行剧本。 [student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
[student@workstation ~]$ lab api-interaction finish
📜11.3 章节实验 [student@workstation ~]$ lab api-review start 📑1. 拉取实验代码。 [student@workstation ~]$ cd /home/student/git-repos [student@workstation git-repos]$ git clone \ http://git.lab.example.com:8081/git/api-review.git [student@workstation git-repos]$ cd api-review 📑2. 按要求,创建模板副本。 使用Ansible uri模块,使用Ansible Tower REST API创建一个现有的New模板Job模板的副本。要创建剧本,请使用本课程中的变量、过滤器和任何其他适用的Ansible最佳实践。 使用以下名称和位置来修改现有的剧本和清单。注意,名称是区分大小写的。 [student@workstation api-review]$ vim inventory.yml tower: hosts: tower.lab.example.com: vars: template_name: New template copy_template_name: Review template tower_fqdn: tower.lab.example.com tower_user: simon tower_password: redhat123 [student@workstation api-review]$ vim copy_template.yml - name: Using the uri module to connect to tower hosts: tower gather_facts: false tasks: - name: Copy the existing New template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/copy/" validate_certs: no method: POST return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: [201, 202] body: name: "{{ copy_template_name }}" body_format: json 📑3. 执行剧本。 [student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
[student@workstation ~]$ lab api-review start 📑1. 拉取实验代码。 [student@workstation ~]$ cd /home/student/git-repos [student@workstation git-repos]$ git clone \ http://git.lab.example.com:8081/git/api-review.git [student@workstation git-repos]$ cd api-review 📑2. 按要求,创建模板副本。 使用Ansible uri模块,使用Ansible Tower REST API创建一个现有的New模板Job模板的副本。要创建剧本,请使用本课程中的变量、过滤器和任何其他适用的Ansible最佳实践。 使用以下名称和位置来修改现有的剧本和清单。注意,名称是区分大小写的。 [student@workstation api-review]$ vim inventory.yml tower: hosts: tower.lab.example.com: vars: template_name: New template copy_template_name: Review template tower_fqdn: tower.lab.example.com tower_user: simon tower_password: redhat123 [student@workstation api-review]$ vim copy_template.yml - name: Using the uri module to connect to tower hosts: tower gather_facts: false tasks: - name: Copy the existing New template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/copy/" validate_certs: no method: POST return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: [201, 202] body: name: "{{ copy_template_name }}" body_format: json 📑3. 执行剧本。 [student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
[student@workstation ~]$ lab api-review start
📑1. 拉取实验代码。 [student@workstation ~]$ cd /home/student/git-repos [student@workstation git-repos]$ git clone \ http://git.lab.example.com:8081/git/api-review.git [student@workstation git-repos]$ cd api-review 📑2. 按要求,创建模板副本。 使用Ansible uri模块,使用Ansible Tower REST API创建一个现有的New模板Job模板的副本。要创建剧本,请使用本课程中的变量、过滤器和任何其他适用的Ansible最佳实践。 使用以下名称和位置来修改现有的剧本和清单。注意,名称是区分大小写的。 [student@workstation api-review]$ vim inventory.yml tower: hosts: tower.lab.example.com: vars: template_name: New template copy_template_name: Review template tower_fqdn: tower.lab.example.com tower_user: simon tower_password: redhat123 [student@workstation api-review]$ vim copy_template.yml - name: Using the uri module to connect to tower hosts: tower gather_facts: false tasks: - name: Copy the existing New template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/copy/" validate_certs: no method: POST return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: [201, 202] body: name: "{{ copy_template_name }}" body_format: json 📑3. 执行剧本。 [student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
[student@workstation ~]$ cd /home/student/git-repos [student@workstation git-repos]$ git clone \ http://git.lab.example.com:8081/git/api-review.git [student@workstation git-repos]$ cd api-review 📑2. 按要求,创建模板副本。 使用Ansible uri模块,使用Ansible Tower REST API创建一个现有的New模板Job模板的副本。要创建剧本,请使用本课程中的变量、过滤器和任何其他适用的Ansible最佳实践。 使用以下名称和位置来修改现有的剧本和清单。注意,名称是区分大小写的。 [student@workstation api-review]$ vim inventory.yml tower: hosts: tower.lab.example.com: vars: template_name: New template copy_template_name: Review template tower_fqdn: tower.lab.example.com tower_user: simon tower_password: redhat123 [student@workstation api-review]$ vim copy_template.yml - name: Using the uri module to connect to tower hosts: tower gather_facts: false tasks: - name: Copy the existing New template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/copy/" validate_certs: no method: POST return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: [201, 202] body: name: "{{ copy_template_name }}" body_format: json 📑3. 执行剧本。 [student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
[student@workstation ~]$ cd /home/student/git-repos [student@workstation git-repos]$ git clone \ http://git.lab.example.com:8081/git/api-review.git [student@workstation git-repos]$ cd api-review
📑2. 按要求,创建模板副本。 使用Ansible uri模块,使用Ansible Tower REST API创建一个现有的New模板Job模板的副本。要创建剧本,请使用本课程中的变量、过滤器和任何其他适用的Ansible最佳实践。 使用以下名称和位置来修改现有的剧本和清单。注意,名称是区分大小写的。 [student@workstation api-review]$ vim inventory.yml tower: hosts: tower.lab.example.com: vars: template_name: New template copy_template_name: Review template tower_fqdn: tower.lab.example.com tower_user: simon tower_password: redhat123 [student@workstation api-review]$ vim copy_template.yml - name: Using the uri module to connect to tower hosts: tower gather_facts: false tasks: - name: Copy the existing New template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/copy/" validate_certs: no method: POST return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: [201, 202] body: name: "{{ copy_template_name }}" body_format: json 📑3. 执行剧本。 [student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
使用Ansible uri模块,使用Ansible Tower REST API创建一个现有的New模板Job模板的副本。要创建剧本,请使用本课程中的变量、过滤器和任何其他适用的Ansible最佳实践。
使用以下名称和位置来修改现有的剧本和清单。注意,名称是区分大小写的。
[student@workstation api-review]$ vim inventory.yml tower: hosts: tower.lab.example.com: vars: template_name: New template copy_template_name: Review template tower_fqdn: tower.lab.example.com tower_user: simon tower_password: redhat123 [student@workstation api-review]$ vim copy_template.yml - name: Using the uri module to connect to tower hosts: tower gather_facts: false tasks: - name: Copy the existing New template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/copy/" validate_certs: no method: POST return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: [201, 202] body: name: "{{ copy_template_name }}" body_format: json 📑3. 执行剧本。 [student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
[student@workstation api-review]$ vim inventory.yml tower: hosts: tower.lab.example.com: vars: template_name: New template copy_template_name: Review template tower_fqdn: tower.lab.example.com tower_user: simon tower_password: redhat123 [student@workstation api-review]$ vim copy_template.yml - name: Using the uri module to connect to tower hosts: tower gather_facts: false tasks: - name: Copy the existing New template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/copy/" validate_certs: no method: POST return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: [201, 202] body: name: "{{ copy_template_name }}" body_format: json
📑3. 执行剧本。 [student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
[student@workstation api-review]$ ansible-playbook copy_template.yml 📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
[student@workstation api-review]$ ansible-playbook copy_template.yml
📑4. 修改提供的template_cleanup.yml的剧本删除原来的新模板模板。 使用DELETE方法。 [student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
使用DELETE方法。
[student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204 📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
[student@workstation api-review]$ vim template_cleanup.yml - name: Using the uri module to delete a Job Template hosts: tower gather_facts: false tasks: - name: Delete an existing Ansible Tower Job Template using the uri module uri: url: "https://{{ tower_fqdn }}/api/v2/job_templates/{{ template_name | urlencode }}/" validate_certs: no method: DELETE return_content: yes force_basic_auth: yes user: "{{ tower_user }}" password: "{{ tower_password }}" status_code: 204
📑5. 执行剧本。 [student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
[student@workstation api-review]$ ansible-playbook template_cleanup.yml 📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
[student@workstation api-review]$ ansible-playbook template_cleanup.yml
📑6. 上传代码。 [student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
[student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push 📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
[student@workstation data-review]$ git status [student@workstation data-review]$ git add --all [student@workstation data-review]$ git commit -m "Updated review playbooks" [student@workstation data-review]$ git push
📑7. 评分与清楚实验。 [student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
[student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。 💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
[student@workstation ~]$ lab api-review grade [student@workstation ~]$ lab api-review finish RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。 以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。
RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。
以上就是【金鱼哥】对 第十一章 使用Ansible与API通信–使用Ansible剧本与Api交互 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。
💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录 如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。 如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕! import json import shutil from ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=None from ansible.parsing.dataloader import DataLoader #读取 Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/ 这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方... 适用于ansible python版本> = 3.7的Restful HTTP API 它是什么? 是一个非常简单的IT自动化系统。 如果您要使用它而不是CLI,请立即尝试。 我可以通过RESTful HTTP Api和实时处理消息(websocket api)为您提供ansible,您可以看到所有详细信息。 0.5.1 添加对签名的sha256加密支持(thx:jbackman) 适合最新的ansible(v2.8.6)和ansible-runner(v1.4.2) 作为响应添加更多错误事件捕获 0.5.0轻而易举地用sanic替换龙卷风(python> = 3.7) 0.3.0使用ansible-runner作为中间件 0.2.6自适应ansible 2.6.4并添加异步模式 0.2.2优化日志 0.2.1优化日志并允许在同一主机中使用mutil-instance 0.2.0支持websocket,删除insible中入侵的代码 [准备工作] python版本> = 3.7(使用asyncio功能) 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 from ansible.i... version2.8: https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html version2.7: https://docs.ansi... # 指定 ansible 安装的modules MODULE_PATH = "//home//production//env//devops//lib//python3.7//site-packages//ansible//modules" def adhoc(host_list, task_list, remote_user='roo https://docs.ansible.com/ansible/2.9/modules/uri_module.html https://www.codenong.com/51214785/ https://blog.csdn.net/byygyy/article/details/105259356 1.调用jenkins pipeline示例: 1.1 by shell curl: curl -X POST http://192.168.3.21:8080/job/lhh_pub/job/hell git clone https://github.com/fortinet-solutions-cse/40ansible.git cd 40ansible 将文件fortigate_mix.yml复制到您的基本目录中: cp examples/fortigate_mix.yml . 使fortigate_mix.yml中的Fortigate的IP适应您的环境 ansible-playbook fortigate_mix.yml 然后,您可以编写自己的剧本并使用清单。 请注意,Ansible不能在FortiGate上运行,而是必须在本地,特定服务器或Docker映像(提供dockerfile)上运行。 Ansible文档中有关模块的更多完整文档: ://docs.ansibl 什么是StrictHostKeyChecking 使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。 但是如果程序自动链接ssh远端机器,就需要由程序自
💾红帽认证专栏系列: RHCSA专栏:戏说 RHCSA 认证 RHCE专栏:戏说 RHCE 认证 此文章收录在RHCA专栏:RHCA 回忆录
如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。
如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕!