博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sysadmin默认密码_sysadmin的Ansible指南:如何简化任务
阅读量:2541 次
发布时间:2019-05-11

本文共 7012 字,大约阅读时间需要 23 分钟。

sysadmin默认密码

在上一篇文章中,我讨论了 。 在本文中,我将向您展示如何使用Ansible进行其他操作,这将使您作为系统管理员的生活更加轻松。 不过,首先,我想分享我加入Ansible的原因。

模块,老实说,我的
regex技术不存在。 由于管理层的指示和指示,我的能力也受到限制:“您只能运行此剧本,而这就是您能做的。”

辞去工作后,我开始在一个团队中工作,该团队的大部分基础架构都在云中。 在适应团队并学习了一切工作原理之后,我开始尝试寻找使更多事情自动化的方法。 我们花了两到三个月的时间来大量部署虚拟机-手动完成所有工作,包括每个虚拟机的生命周期(从供应到停用)。 我们的工作经常落后于计划,因为我们花费了大量时间进行维护。 当人们去度假时,其他人不得不接管他们正在做的任务。

深入了解Ansible

共享有关如何解决问题的想法是我们在IT和开源世界中可以做的最好的事情之一,因此我通过并以 寻求帮助。

阅读文档(包括以下主题)是开始学习Ansible的最佳方法。

如果您想弄清楚您可以使用Ansible做什么,请花点时间思考一下您的日常活动,那些花费很多时间的活动可能会花在其他事情上。 这里有些例子:

  • 在系统中管理帐户:创建用户,将其添加到正确的组中以及添加SSH密钥……当我们要构建大量的系统时,这些东西过去常常需要我几天。 即使使用Shell脚本,此过程也非常耗时。
  • 维护所需软件包的列表:这可能是安全状况的一部分,其中包括应用程序所需的软件包。
  • 安装应用程序:您可以使用当前的文档,并通过找到适合工作的将应用程序安装转换为任务。
  • 配置系统和应用程序:您可能想通过添加一两行来针对不同的环境(例如,生产与开发)更改/etc/ssh/sshd_config ,或者您可能希望文件在您所使用的每个系统中看起来都是特定的方式重新管理。
  • 在云中配置VM:当您需要启动一些与您的应用程序相似的虚拟机并且厌倦了使用UI时,这非常有用。

现在,让我们看看如何使用Ansible来自动化其中一些重复性任务。

管理用户

如果您需要创建一个庞大的用户和组列表,并且用户分布在不同的组中,则可以使用 。 让我们从创建组开始:

- name: create user groups     
  group:
    name: "{
{ item }}"
  loop:
    - postgresql
    - nginx-test
    - admin
    - dbadmin
    - hadoop

您可以使用以下特定参数创建用户:

- name: all users in the department     
  user:
    name:  "{
{ item.name }}"
    group: "{
{ item.group }}"
    groups: "{
{ item.groups }}"
    uid: "{
{ item.uid }}"
    state: "{
{ item.state }}"
  loop:
    - { name: 'admin1', group: 'admin', groups: 'nginx', uid: '1234', state: 'present' }
    - { name: 'dbadmin1', group: 'dbadmin', groups: 'postgres', uid: '4321', state: 'present' }
    - { name: 'user1', group: 'hadoop', groups: 'wheel', uid: '1067', state: 'present' }
    - { name: 'jose', group: 'admin', groups: 'wheel', uid: '9000', state: 'absent' }

查看用户jose ,您可能会发现该state: 'absent'会删除该用户帐户,并且您可能想知道为什么在删除用户帐户时需要包括所有其他参数。 这是因为这是保留重要更改文档以进行审核或安全合规性的好地方。 通过将角色存储在Git中作为事实的来源,如果以后需要回答有关为何进行更改的问题,则可以回头查看Git中的旧版本。

要为某些用户部署SSH密钥,可以使用与上一个示例相同的循环类型。

- name: copy admin1 and dbadmin ssh keys     
  authorized_key:
    user: "{
{ item.user }}"
    key: "{
{ item.key }}"
    state: "{
{ item.state }}"
    comment: "{
{ item.comment }}"
  loop:
    - { user: 'admin1', key: "{
{ lookup('file', '/data/test_temp_key.pub'), state: 'present', comment: 'admin1 key' }
    - { user: 'dbadmin', key: "{
{ lookup('file', '/data/vm_temp_key.pub'), state: 'absent', comment: 'dbadmin key' }

在这里,我们指定user ,如何通过使用lookupstate和描述密钥用途的commentlookup密钥。

安装套件

软件包的安装可能会因所使用的打包系统而异。 您可以使用来确定要使用哪个模块。 Ansible确实提供了一个名为的通用模块,该模块使用ansible_pkg_mgr并为系统调用适当的软件包管理器。 例如,如果您使用的是Fedora,则软件包模块将调用DNF软件包管理器。

如果您要简单安装软件包,则软件包模块将起作用。 如果您要进行更复杂的工作,则必须为系统使用正确的模块。 例如,如果要忽略GPG密钥并在基于RHEL的系统上安装所有安全软件包,则需要使用yum模块。 根据不同,您将有不同的选择,但是与Ansible的通用包装模块相比,它们通常提供更多的参数。

这是使用package模块的示例:

  - name: install a package     
    package:
      name: nginx
      state: installed

以下使用yum模块安装NGINX,从存储库中禁用gpg_check ,忽略存储库的证书,并跳过可能显示的任何损坏的软件包。

  - name: install a package     
    yum:
      name: nginx
      state: installed
      disable_gpg_check: yes
      validate_certs: no
      skip_broken: yes

这是使用的示例。 Apt模块告诉Ansible卸载NGINX而不更新缓存:

  - name: install a package     
    apt:
      name: nginx
      state: absent
      update_cache: no

您可以在安装软件包时使用loop ,但是如果您通过以下列表将对它们进行单独处理:

  - name:     
      - nginx
      - postgresql-server
      - ansible
      - httpd

注意:请确保您在使用的程序包管理器中知道所需程序包的正确名称。 有些名称会根据程序包管理器而变化。

启动服务

与软件包非常相似,Ansible具有不同的模块来启动 。 就像在前面的示例中一样,我们使用package模块进行软件包的常规安装,而模块则对服务(包括systemd和Upstart)执行类似的工作。 (请查看模块的文档以获取完整列表。)这是一个示例:

  - name: start nginx     
    service:
      name: nginx
      state: started

如果您只是启动和停止应用程序并且不需要任何更复杂的内容,则可以使用Ansible的服务模块。 但是,与yum模块一样,如果需要更多选项,则需要使用systemd模块。 例如,如果您修改systemd文件,则需要执行daemon-reload ,服务模块将无法正常运行; 您将必须使用systemd模块。

  - name: reload postgresql for new configuration and reload daemon     
    systemd:
      name: postgresql
      state: reload
      daemon-reload: yes

这是一个很好的起点,但是由于该服务将始终重新加载/重新启动,因此可能会变得很麻烦。 这是使用的好地方。

如果您使用最佳实践并使用ansible-galaxy init "role name"创建了角色,那么您应该具有完整的 。 您可以将上面的代码包含在handlers/main.yml ,并在对应用程序进行更改时调用它。 例如:

handlers/main.yml     
  - name: reload postgresql for new configuration and reload daemon
    systemd:
      name: postgresql
      state: reload
      daemon-reload: yes

这是调用处理程序的任务:

  - name: configure postgresql     
    template:
      src: postgresql.service.j2
      dest: /usr/lib/systemd/system/postgresql.service
    notify: reload postgresql for new configuration and reload daemon

它通过更改systemd文件来配置PostgreSQL,但是它没有在任务中定义重启(如之前),而是在运行结束时调用处理程序进行重启。 这是配置应用程序并保持幂等的好方法,因为处理程序仅在任务更改时才运行,而不是在配置过程中运行。

前面的示例使用和 。 使用Ansible配置应用程序最美妙的事情之一就是使用模板。 您可以使用所需的完整配置来配置整个文件,例如postgresql.service 。 但是,不必更改每一行,而可以使用变量并在其他位置定义选项。 这将使您可以随时更改任何变量,并且用途更多。 例如:

[database]     
DB_TYPE  = "{
{ gitea_db }}"
HOST     = "{
{ ansible_fqdn}}:3306"
NAME     = gitea
USER     = gitea
PASSWD   = "{
{ gitea_db_passwd }}"
SSL_MODE = disable
PATH     = "{
{ gitea_db_dir }}/gitea.db

此配置文件上的数据库选项app.ini为 。 即使它是一个配置文件,这也类似于编写Ansible任务,并且可以轻松定义变量和进行更改。 如果使用 ,则可以进一步扩展,它允许您为所有系统和特定组定义变量(例如,生产与开发)。 这样可以更轻松地管理变量,并且您不必在每个角色中都指定相同的变量。

设置系统

我们已经讨论了您可以在系统上使用Ansible进行的几项操作,但尚未讨论如何配置系统。 这是一个使用OpenStack云解决方案配置虚拟机(VM)的示例。

  - name: create a VM in openstack     
    osp_server:
      name: cloudera-namenode
      state: present
      cloud: openstack
      region_name: andromeda
      image: 923569a-c777-4g52-t3y9-cxvhl86zx345
      flavor_ram: 20146
      flavor: big
      auto_ip: yes
      volumes: cloudera-namenode

所有OpenStack模块均以os开头,这使得查找它们变得更加容易。 上面的配置使用osp-server模块,该模块允许您添加或删除实例。 它包括VM的名称,其状态,其云选项以及如何向API进行身份验证。 OpenStack文档中提供了有关更多信息,但是如果您不想使用cloud.yml,则可以使用字典,使用auth选项列出您的凭据。 如果要删除VM,只需将state:更改为absent

假设您有一个关闭的服务器列表,因为您不知道如何使应用程序正常工作,而您想重新启动它们。 您可以使用os_server_action重新启动它们(如果要从头开始,则可以重新构建它们)。

这是一个启动服务器并告知模块实例名称的示例:

  - name: restart some servers     
    os_server_action:
      action: start
      cloud: openstack
      region_name: andromeda
      server: cloudera-namenode

大多数OpenStack模块使用类似的选项。 因此,要重建服务器,我们可以使用相同的选项,但是要更改actionrebuild并添加我们要使用的image

  os_server_action:     
    action: rebuild
    image: 923569a-c777-4g52-t3y9-cxvhl86zx345

做其他事情

有许多系统管理员任务的模块,但是如果您没有要执行的任务,该怎么办? 使用和模块,它们使您可以像在命令行上一样运行任何命令。 这是使用的示例:

  - name: run an opencli command     
    command: "openstack hypervisor list"

您可以通过多种方式用Ansible执行日常sysadmin任务。 使用此自动化工具可以将最艰巨的任务转变为简单的解决方案,节省时间,并使工作时间更短,更轻松。

翻译自:

sysadmin默认密码

转载地址:http://nwnzd.baihongyu.com/

你可能感兴趣的文章
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-5.PageHelper分页插件使用
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-6.微信扫码登录回调本地域名映射工具Ngrock...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-8.用户模块开发之保存微信用户信息...
查看>>
Linux下Nginx安装
查看>>
LVM扩容之xfs文件系统
查看>>
Hbase记录-client访问zookeeper大量断开以及参数调优分析(转载)
查看>>
代码片段收集
查看>>
vue-cli3创建项目时报错
查看>>
输入1-53周,输出1-53周的开始时间和结束时间
查看>>
实验二
查看>>
shell——按指定列排序
查看>>
crash 收集
查看>>
507 LOJ 「LibreOJ NOI Round #1」接竹竿
查看>>
UI基础--烟花动画
查看>>
2018. 2.4 Java中集合嵌套集合的练习
查看>>
精通ASP.NET Web程序测试
查看>>
vue 根据不同属性 设置背景
查看>>
51Nod1601 完全图的最小生成树计数 Trie Prufer编码
查看>>
Codeforces 1110D. Jongmah 动态规划
查看>>
android驱动在win10系统上安装的心酸历程
查看>>