编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

四个值得收藏的Ansible playbook(ansible playbook -i)

wxchong 2024-07-08 23:35:26 开源技术 13 ℃ 0 评论



使用这些Ansible playbook,简化和加强复杂IT环境中的自动化流程。

在复杂的IT环境中,即使是最小的任务也可能永远存在。庞大的系统很难开发,部署和维护。业务需求只会增加复杂性,IT团队会在管理,可用性和成本方面遇到困难。

如何解决这种复杂性并满足当今的业务需求?毫无疑问,Ansible可以改进你当前的流程,迁移应用程序以实现更好的优化,并为整个组织的DevOps实践提供单一语言。

更重要的是,你可以通过Ansible playbooks声明配置,它们可以协调任何手动定制流程的步骤,即使不同的步骤必须在特定工单之间来回跳转。他们可以同步或异步启动任务。

虽然可以运行/usr/bin/ansible程序来执行临时任务,但是Playbook更有可能保留在源代码管理中并用于推出配置或确保远程系统的配置符合规范。由于Ansible playbooks是配置,部署和编排语言,因此可以描述希望远程系统实施的策略或一般IT流程中的一系列步骤。

以下是四个Ansible playbook,你应该尝试进一步自定义和配置自动化的工作方式。

管理Kubernetes对象

当你对Kubernetes对象执行CRUD操作时,Ansible playbooks使你能够通过OpenShift Python客户端快速轻松地访问所有Kubernetes API。以下playbook片段向你展示如何创建特定的Kubernetes命名空间和服务对象:

- name: Create a k8s namespace
 k8s:
 name: mynamespace
 api_version: v1
 kind: Namespace
 state: present
- name: Create a Service object from an inline definition
 k8s:
 state: present
 definition:
 apiVersion: v1
 kind: Service
 metadata:
 name: web
 namespace: mynamespace
 labels:
 app: galaxy
 service: web
 spec:
 selector:
 app: galaxy
 service: web
 ports:
 - protocol: TCP
 targetPort: 8000
 name: port-8000-tcp
 port: 8000
- name: Create a Service object by reading the definition from a file
 k8s:
 state: present
 src: /mynamespace/service.yml
# Passing the object definition from a file
- name: Create a Deployment by reading the definition from a local file
 k8s:
 state: present
 src: /mynamespace/deployment.yml


减轻像Meltdown和Spectre这样的重要安全问题

在1月的第一周,宣布了两个漏洞:Meltdown和Spectre。两者都涉及硬件或地球上每个计算设备的核心:处理器。虽然Meltdown和Spectre没有完全缓解,但以下playbook片段显示了如何轻松部署Windows补丁:

- name: Patch Windows systems against Meltdown and Spectre
 hosts: "{{ target_hosts | default('all') }}"
 vars:
 reboot_after_update: no
 registry_keys:
 - path: HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
 name: FeatureSettingsOverride
 data: 0
 type: dword
 - path: HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
 name: FeatureSettingsOverrideMask
 data: 3
 type: dword
 # https://support.microsoft.com/en-us/help/4072699
 - path: HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\QualityCompat
 name: cadca5fe-87d3-4b96-b7fb-a231484277cc
 type: dword
 data: '0x00000000'
 tasks:
 - name: Install security updates
 win_updates:
 category_names:
 - SecurityUpdates
 notify: reboot windows system
 - name: Enable kernel protections
 win_regedit:
 path: "{{ item.path }}"
 name: "{{ item.name }}"
 data: "{{ item.data }}"
 type: "{{ item.type }}"
 with_items: "{{ registry_keys }}"
 handlers:
 - name: reboot windows system
 win_reboot:
 shutdown_timeout: 3600
 reboot_timeout: 3600
 when: reboot_after_update

相应的Linux的playbook链接如下:

https://github.com/ansible/ansible-lockdown/blob/master/meltdown-spectre-linux.yml

将CI/CD流程与Jenkins集成

Jenkins是实现CI/CD的着名工具。Shell脚本通常用于配置环境或在流水线中部署应用程序。虽然这可行,但从长远来看,维护和重用脚本很麻烦。以下Playbook代码段显示了如何使用Jenkins流水线在持续集成/持续交付(CI/CD)过程中配置基础结构。

---
- name: Deploy Jenkins CI
hosts: jenkins_server
remote_user: vagrant
become: yes
roles:
 - geerlingguy.repo-epel
 - geerlingguy.jenkins
 - geerlingguy.git
 - tecris.maven
 - geerlingguy.ansible
- name: Deploy Nexus Server
hosts: nexus_server
remote_user: vagrant
become: yes
roles:
 - geerlingguy.java
 - savoirfairelinux.nexus3-oss
- name: Deploy Sonar Server
hosts: sonar_server
remote_user: vagrant
become: yes
roles:
 - wtanaka.unzip
 - zanini.sonar
- name: On Premises CentOS
hosts: app_server
remote_user: vagrant
become: yes
roles:
 - jenkins-keys-config

使用Istio启动服务网格

借助云平台,开发人员必须使用微服务来构建可移植性。同时,运维正在管理极其庞大的混合和多云部署。与Istio的服务网格允许你通过专用基础设施(如Envoy边车容器)连接,保护,控制和观察服务,而不是开发人员。以下playbook片段显示如何在你的计算机上本地安装Istio:

---
# Whether the cluster is an Openshift (ocp) or upstream Kubernetes (k8s) cluster
cluster_flavour: ocp
istio:
 # Install istio with or without istio-auth module
 auth: false
 # A set of add-ons to install, for example kiali
 addon: []
 # The names of the samples that should be installed as well.
 # The available samples are in the istio_simple_samples variable
 # In addition to the values in istio_simple_samples, 'bookinfo' can also be specified
 samples: []
 # Whether or not to open apps in the browser
 open_apps: false
 # Whether to delete resources that might exist from previous Istio installations
 delete_resources: false


结论

可以在ansible-examples存储库中找到可以说明这些技术的全套手册。

希望Ansible playbook的这些提示和片段提供了一些有趣的方法来扩展你的自动化之旅。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表