对于一个加入域的Linux实例,在启动时,如何配置sudoers、fstab和用户登录等配置?我可以使用User data吗?

0

【以下的问题经过翻译处理】 大家好,我一直在尝试简化将一个Linux实例加入我的域的过程。目前,我仍然需要手动处理许多配置,但我希望能够自动化这些工作,包括以下内容:

  1. 从我的目录服务实现中限制登录到AWS Delegated Administrators组
  2. 将AWS Delegated Administrators组添加到sudoers文件中(是否有更好的方法实现此功能?应该使用/etc/sudoers.d文件夹吗?这看起来是比较干净的做法,但我找不到有关如何配置此文件夹的文档。
  3. 安装cifs-utils
  4. 配置登录Banner
  5. 在某些情况下,配置fstab文件

我认为3、4和5可以通过userdata文件轻松完成,但我不清楚如何为1和2配置所有必要的文件。例如,为了正确允许AWS Delegated Administrators组登录系统,需要配置以下文件:

  • /etc/pam.d/login
  • /etc/pam.d/sshd
  • /etc/security/access.conf

我找到的文档显示,我需要更新pam.d文件以允许登录组/用户名中包含空格。

我认为这些操作是把一个Linux实例加入域的相当基本的配置步骤,因此如果能够标准化这些操作是非常好的,比如在一个SSM文档中运行。或者如果在选择域加入时可以在实例启动过程中设置动态选项,那将是更好的。

1 Antwort
0

【以下的回答经过翻译处理】 你描述的可以使用user-data实现,但是需要写一些复杂脚本而且并不优雅,但是确实可以实现。

然而,如果你不介意的话,我想推荐使用Packer https://www.packer.io/

为什么呢?因为使用packer,你可以构建常称为Golden AMI的黄金镜像,可以在部署实例时推送和使用这样的AMI。现在,配置管理的设置可以使用Packer所谓的“Provisioners”来实现,下面是你可能会感兴趣的Provisioner的示例,并且如果你真的想要一个简洁的方式来配置AMI中的各种配置的话,可以使用Ansible作为Provisioner,并利用Ansible的Playbooks或Roles来定义你的任务。

  "variables": {
    "aws_access_key": "{{env `AWS_ACCESS_KEY_ID`}}",
    "aws_secret_key": "{{env `AWS_SECRET_ACCESS_KEY`}}",
    "region": "us-east-1"
  },
  "builders": [
    {
      "access_key": "{{user `aws_access_key`}}",
      "secret_key": "{{user `aws_secret_key`}}",
      "type": "amazon-ebs",
      "profile": "default",
      "region": "{{user `region`}}",
      "instance_type": "t2.micro",
      "ssh_username": "centos",
      "source_ami" : "ami-0affd4508a5d2481b",
      "ami_name": "centos-aws-demo-{{timestamp}}",
      "ami_description":"CentOS Linux 7 x86_64 HVM EBS ENA 2002_01 with docker",
      "run_tags" : {
        "Name" : "packer-builder-docker",
        "Tool" : "Packer",
        "Author" : "DavidCaballero"
      },
      "tags": {
        "Name": "centos-aws-demo"
      }
    }
  ],
  "provisioners": [
    {
      "type": "file",
      "source": "./welcome.txt",
      "destination": "/home/centos/"
    },
    {
      "type": "shell",
      "inline": ["ls -al /home/centos", "cat /home/centos/welcome.txt"]
    },
    {
      "type": "shell",
      "script": "./docker_install.sh"
    },
    {
      "type": "ansible",
      "playbook_file": "./playbooks/hostname.yml"
    }
  ]
}```
profile picture
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen