ansible 复制程序_如何使用Ansible修补系统和安装应用程序

本文介绍了如何利用Ansible的yum模块进行系统更新和应用安装,以及如何实现系统的重启和重新连接。示例包括更新系统、安装RPM、安装NGINX以及处理服务重启。此外,还探讨了在生产环境中考虑的异步、轮询、连载和叉子等设置,以适应大规模主机的管理需求。
摘要由CSDN通过智能技术生成

ansible 复制程序

您是否曾经想过如何修补系统,重新启动并继续工作?

Ansible ,一个简单的配置管理工具,可以简化一些最艰巨的工作。 例如,系统管理任务可能很复杂,需要数小时才能完成或对安全性有复杂的要求。

以我的经验,成为系统管理员最困难的部分之一就是打补丁系统。 每次收到安全部门强制要求的常见漏洞和披露(CVE)通知或信息保证漏洞警报(IAVA)时,您都必须加倍努力以消除安全漏洞。 (并且,相信我,除非漏洞得到修补,否则您的安全人员会追捕您。)

Ansible可以通过运行打包模块来减少修补系统所需的时间。 为了演示,让我们使用yum模块来更新系统。 Ansible可以从其他位置安装,更新,删除或安装(例如,通过持续集成/持续开发获得的rpmbuild )。 这是更新系统的任务:



   
   
  - name: update the system
    yum:
      name: "*"
      state: latest

在第一行中,我们给任务取一个有意义的name以便我们知道Ansible在做什么。 在下一行中, yum module更新CentOS虚拟机(VM),然后name: "*"告诉yum更新所有内容,最后state: latest更新到最新RPM。

更新系统后,我们需要重新启动并重新连接:



   
   
  - name: restart system to reboot to newest kernel
    shell: "sleep 5 && reboot"
    async: 1
    poll: 0

  - name: wait for 10 seconds
    pause:
      seconds: 10

  - name: wait for the system to reboot
    wait_for_connection:
      connect_timeout: 20
      sleep: 5
      delay: 5
      timeout: 60

  - name: install epel-release
    yum:
      name: epel-release
      state: latest

shell module使系统进入Hibernate状态5秒钟,然后重新启动。 我们使用sleep来防止连接断开,使用async来避免超时,并使用poll来激发并忘记。 我们暂停10秒钟,以等待VM回来,并使用wait_for_connection尽快建立连接,以重新连接到VM。 然后,我们install epel-release以测试RPM安装。 您可以多次运行此剧本以显示idempotent ,由于我们正在使用shell模块,因此唯一显示为已更改的任务是重新启动。 如果不希望实际更改,可以在使用shell模块时使用changed_when: False忽略更改。

到目前为止,我们已经学习了如何更新系统,重新启动VM,重新连接和安装RPM。 接下来,我们将使用Ansible Lightbulb中的角色安装NGINX。



   
   
  - name: Ensure nginx packages are present
    yum:
      name: nginx, python-pip, python-devel, devel
      state: present
    notify: restart-nginx-service

  - name: Ensure uwsgi package is present
    pip:
      name: uwsgi
      state: present
    notify: restart-nginx-service

  - name: Ensure latest default.conf is present
    template:
      src: templates/nginx.conf.j2
      dest: /etc/nginx/nginx.conf
      backup: yes
    notify: restart-nginx-service

  - name: Ensure latest index.html is present
    template:
      src: templates/index.html.j2
      dest: /usr/share/nginx/html/index.html

  - name: Ensure nginx service is started and enabled
    service:
      name: nginx
      state: started
      enabled: yes

  - name: Ensure proper response from localhost can be received
    uri:
      url: "http://localhost:80/"
      return_content: yes
    register: response
    until: 'nginx_test_message in response.content'
    retries: 10
    delay: 1

以及重新启动nginx服务的处理程序:



   
   
# handlers file for nginx-example
  - name: restart-nginx-service
    service:
      name: nginx
      state: restarted

在这个角色中,我们将安装RPM nginxpython-pippython-develdevel并使用PIP安装uwsgi 。 接下来,我们使用template模块复制nginx.confindex.html以显示页面。 之后,我们确保在启动和启动时启用该服务。 然后,我们使用uri模块检查与页面的连接。

这是一本剧本,显示了更新,重新启动和安装RPM的示例。 然后继续安装nginx。 可以使用所需的任何其他角色/应用程序完成此操作。



   
   
  - hosts: all
    roles:
      - centos-update
      - nginx-simple

观看此演示视频,以进一步了解该过程。

这只是有关如何更新,重新引导和继续的简单示例。 为了简单起见,我添加了没有变量的软件包。 一旦开始使用大量主机,就需要更改一些设置:

这是因为在生产环境中,您可能希望一次更新一个系统(而不是一劳永逸),实际上需要等待更长的时间才能重新引导系统并继续。

有关使用此工具自动执行工作的更多方法,请参阅Opensource.com上的其他Ansible文章

翻译自: https://opensource.com/article/18/3/ansible-patch-systems

ansible 复制程序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值