基于ansible初始化linux服务器基础环境。

这篇具有很好参考价值的文章主要介绍了基于ansible初始化linux服务器基础环境。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

大家好,今天我要和大家分享一个关于搭建centos环境的新方法。

以前我们经常会看到一些文章介绍如何搭建centos环境,但很多时候都会出现一些问题。不过现在有了一种新的方法,就是使用ansible脚本来实现。

虽然这种方法仅适用于centos7,但只要稍作修改就可以应用到其他的环境中。使用ansible脚本可以让搭建环境更加简单、快速、稳定。

 GIT 项目访问地址

https://gitee.com/haofeng82/basic-host-machine--init.git

目录

介绍

软件架构

安装教程

使用说明

初始化操作用户。

     2. 主机基本功能初始化。

    3.为机器设置host映射。

        可能存在的问题

脚本摘要

1 初始化操作账户

2 初始化centos系统

3 安装docker

4 设置hosts映射

 GIT 项目访问地址


介绍

这是一套ansbile脚本,实现了始化基于centos7系统的服务器主机基础环境的功能。 目前仅用于测试和教学环境使用,并仅保证centos77版本有效。

软件架构

软件基于ansible脚本对服务器进行初初始化工作,主要工作如下: 1 增加ops做操作账户,并为其增加ssh证书登录,此用户可以切换至root。 2 并且禁用了root登录。所有需要root的行为,都会通过ops 进行become 3 禁用了防火墙等功能。统一使用外部防火墙。 4 安装了必要的系统包,并进行了系统优化。 5 安装了docker,因为后续的一些其他项目的安装,会用到docker。 6 提供了统一设置主机host的功能

安装教程

1需要找一台服务器,安装ansible环境,然后把当前项目复制到相应的目录下。

2依据后面的使用步骤执行脚本即可。 PS:主机目录文件需要自行进行修改。 证书使用了预先生成好的证书,也可以自行生成配置。

使用说明

  1. 初始化操作用户。

        当拿到一台新机器时,首先需要对其进行用户限制。 前提:将主机设置为可以使用root登录。密码统一初始化为XXX.

        主要操作如下: 1 禁用root的远程登录。 2 禁用密码登录。 3 创建operator操作用户,及operator组。并为其设置登录密码、上传登录共公钥。

        上面的所有操作,均在init-user角色中,并通过下面的脚本调用

        上传整个目录到ansible主机的/ansible/basic-host-machine目录下,并对host文件中的to-init-user-host分组中的主机ip进行设置。指定为要操作的机器。 cd /ansible/basic-host-machine cp -rf /ansible/basic-host-machine/.ssh /root ansible-playbook -vvv --check -i hosts/nat/host-basic init-basic-host-user.yml ansible-playbook -vvv -i hosts/nat/host-basic init-basic-host-user.yml

     2. 主机基本功能初始化。

        此步骤必须依赖第一步 在执行完初始化用户之后。会以operator用户进行登录。 此时的root用户已经被禁用掉了。

        上传整个目录到ansible主机的/ansible/basic-host-machine目录下,并对host文件中的to-init-env-host分组中的主机ip进行设置。指定为要操作的机器。

        主要工作包括: 安装必要的工具包 开启或者关闭防火墙以及selinux 安装docker环境

        cd /ansible/basic-host-machine

        ansible-playbook -vvv --check -i hosts/nat/host-basic init-basic-host-env.yml ansible-playbook -vvv -i hosts/nat/host-basic init-basic-host-env.yml

    3.为机器设置host映射。

        此步骤必须依赖第一步 统一对主机的hosts进行配置

        上传整个目录到ansible主机的/ansible/basic-host-machine目录下,并对host文件中的to-init-user-host分组中的主机ip进行设置。指定为要操作的机器。 cd /ansible/basic-host-machine

        ansible-playbook -vvv --check -i hosts/nat/host-basic set-host-mapping

        ansible-playbook -vvv -i hosts/nat/host-basic set-host-mapping.yml

        可能存在的问题

变量的配置还是有一些不合适的地方。需要再进行修改。目前仅是提交了初始版本。

代码放到了git上,需要的小伙伴直接拿来用就好。如果有不严谨的地方,也希望能够指正出来。

脚本摘要

1 初始化操作账户

---

#关闭防火墙

- name: close fire wall

  shell: "{{ item}}"

  with_items:

    - "systemctl stop firewalld.service"

    - "systemctl disable firewalld.service"

#关闭selinux

- name: Disabled SELinux

  selinux: state=disabled

#下次启动也不会再起selinux

- name: set selinux disabled

  replace:

    path: /etc/selinux/config

    regexp: '^SELINUX=enforcing'

    replace: 'SELINUX=disabled'

##创建用户分组

- name: Create group

  group:  name={{group}} state=present

  when: add_user

#当add_user变量为true,创建用户。此用户用于运行项目。

- name: Add sudo user

  user:

    name: "{{ user }}"

    password: "{{ operation_user_password }}"

    state: present

  when: add_user


 

#将证书拷贝至远程机器,用户为root,这一步是为了能够通过证书ssh访问远程主机

- name: install ssh key

  authorized_key: user={{user}}

                  key="{{ lookup('file','/root/.ssh/id_rsa.pub')}}"

                  state=present


 

#将用户临时切换到为sudo root用户时,设置为不需要密码。

- name: Add configured user accounts to passwordless sudoers.

  lineinfile: >

    dest=/etc/sudoers

    regexp='^{{ user }}'

    line='{{ user }} ALL=(ALL) NOPASSWD: ALL'

    state=present

    validate='visudo -cf %s'

2 初始化centos系统

---

#配置主机名

- name: Configure hostname

  hostname:

    name: "{{ host_name }}"

- name: install basic tools1

  yum:

    name: "{{ item }}"

    state: present

  with_items:

      - "wget"

     

   

#更换yum阿里数据源    

- name: change yum source to ali

  shell: "{{ item}}"

  with_items:

    - "mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup"

    - "wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo"

    - "yum clean all"

    - "yum makecache"

#安装基础工具

#- name: update yum

#  shell: yum -y update

- name: install basic tools2

  yum:

    name: "{{ item }}"

    state: present

  with_items:

      - "wget"

      - "curl"

      - "unzip"

      - "vim"

      - "net-tools"

      - "nfs-utils"

      - "pcre-devel"

      - "openssl-devel"

      - "gcc"

      - "perl"

      - "perl-devel"

#复制cronolog rpm安装文件到服务器

- name: copy cronolog rpm install file

  copy:

    src:  "{{ playbook_dir }}/data/archive/cronolog-1.6.2-14.el7.x86_64.rpm"

    dest: "/tools/cronolog/"

# 安装 cronolog

- name: install cronolog

  shell: "{{ item }}"

  with_items:

    - "rpm -ivh /tools/cronolog//cronolog-1.6.2-14.el7.x86_64.rpm"

  ignore_errors: True    



 

#临时修改linux文件句柄数(用户级别)

- name: modify linux user ulimit temp

  shell: "{{ item}}"

  with_items:

    - "ulimit -SHn 65535"

# 永久修改 linux user soft limit

- name: modify linux root user soft  ulimit per

  lineinfile: >

    dest=/etc/security/limits.conf

    regexp='^root soft nofile'

    line='root soft nofile 65535'

    state=present

# 永久修改 linux user hard limit

- name: modify linux user ulimit per

  lineinfile: >

    dest=/etc/security/limits.conf

    regexp='^root hard nofile'

    line='root hard nofile 65535'

    state=present

# 永久修改 linux user soft limit

- name: modify linux ops user soft  ulimit per

  lineinfile: >

    dest=/etc/security/limits.conf

    regexp='^ops soft nofile'

    line='ops soft nofile 65535'

    state=present

# 永久修改 linux user hard limit

- name: modify linux ops user ulimit per

  lineinfile: >

    dest=/etc/security/limits.conf

    regexp='^ops hard nofile'

    line='ops hard nofile 65535'

    state=present

# 上传 linux system 配置文件,优化系统性能参数

- name: upload linux system   ulimit temp

  shell: "echo  655350 > /proc/sys/fs/file-max"

- name: Copy sysctl.conf to server

  template:

    src: sysctl.conf.j2

    dest: /etc/sysctl.conf

    mode: 0740

# 重启sysctl

- name: restart sysctl

  shell: "sysctl -p"






 

   

#将证书复制到用户的.ssh目录下,并更改权限。

- name: copy auth public  key to host file

  copy:

    src:  "/root/.ssh/id_rsa.pub"

    dest: "/home/{{ user }}/.ssh/"

    owner: "{{ user }}"

    group: "{{ group }}"

#私钥的权限一定不要别的用户和组能够读取到

- name: copy auth private key to host file

  copy:

    src:  "/root/.ssh/id_rsa"

    dest: "/home/{{ user }}/.ssh/"

    owner: "{{ user }}"

    group: "{{ group }}"

    mode: 0600

#更新sshd文件配置,更改sshd端口,是否开启sshd_use_dns,是否开启sshd_gssapi_authentication是否开启,

#设置sshd协议 2,禁止root登录(先不设置)是否开启密码登录(先不禁止密码登录)

- name: Update SSH configuration to be standard setting.

  lineinfile: >

    dest={{ sshd_config_path }}

    regexp="{{ item.regexp }}"

    line="{{ item.line }}"

    state=present

  with_items:

    - { regexp: "^#?Port", line: "Port {{ sshd_port }}" }

    - { regexp: "^#?UseDNS", line: "UseDNS {{ sshd_use_dns }}" }

    - { regexp: "^GSSAPIAuthentication", line: "GSSAPIAuthentication {{ sshd_gssapi_authentication}}" }

    - { regexp: "^#?Protocol", line: "Protocol {{ sshd_protocol }}" }

    - { regexp: "^#?PermitRootLogin", line: "PermitRootLogin {{ sshd_permit_root_login }}" }

    - { regexp: "^PasswordAuthentication", line: "PasswordAuthentication {{ sshd_password_authentication }}" }

    - { regexp: "^#?RSAAuthentication", line: "RSAAuthentication yes" }

    - { regexp: "^#?PubkeyAuthentication", line: "PubkeyAuthentication yes" }

    - { regexp: "^#?RhostsRSAAuthentication", line: "RhostsRSAAuthentication yes" }

   

  notify: restart sshd

#更新sshd文件配置,更改sshd端口,是否开启sshd_use_dns,是否开启sshd_gssapi_authentication是否开启,

#设置sshd协议 2,禁止root登录(先不设置)是否开启密码登录(先不禁止密码登录)

- name: Update SSH configuration to be standard setting.

  lineinfile: >

    dest={{ ssh_config_path }}

    regexp="{{ item.regexp }}"

    line="{{ item.line }}"

    state=present

  with_items:

    - { regexp: "^#?StrictHostKeyChecking", line: "StrictHostKeyChecking no" }

   

  notify: restart sshd

3 安装docker

---

#配置主机名

#https://www.jianshu.com/p/b4a6239712bf

#还需要更新docker镜像源!!

- name: Configure hostname

  hostname:

    name: "{{ host_name }}"

- name: install yum-utils

  yum: name=yum-utils state=present

  ignore_errors: True

- name: add docker repo

  shell: yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

  ignore_errors: True

- name: install docer-ce

  yum:

    name: docker-ce

    state: present

  ignore_errors: True

- name: install docker-ce-cli

  yum:

    name: docker-ce-cli

    state: present

  ignore_errors: True

- name: install containerd.io

  yum:

    name: containerd.io

    state: present

  ignore_errors: True

- name: 创建docker目录

  shell: mkdir -p /etc/docker/

- name: config mirro

  copy: src=~/docker-daemon.json dest=/etc/docker/daemon.json

  tags: configmirro

- name: start enable docker

  service: name=docker state=started enabled=true

- name: restrat

  shell: sudo systemctl daemon-reload && sudo systemctl restart docker

  tags: restart

#必须在ansible主机之上,的/data/archive下存在docker-compose文件

- name: Copy docker compose file

  copy:

    src:  "{{ playbook_dir }}/data/archive/docker-compose"

    dest: "/usr/local/bin/docker-compose"

- name: install docker compose

  shell: "{{ item }}"

  with_items:

      - "sudo chmod +x /usr/local/bin/docker-compose"

      - "sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose"

      - "sudo docker-compose --version"

  ignore_errors: True

     

       

4 设置hosts映射

#更新ip-host映射  

- name: update-ip-host-mapping

  template:

    src: host-file.j2

    dest: /etc/hosts

    mode: 0644

 GIT 项目访问地址

https://gitee.com/haofeng82/basic-host-machine--init.git


 

大家可以在评论区留言,分享自己使用ansible脚本搭建环境的经验和技巧,让我们一起交流吧!记得点赞和分享哦!文章来源地址https://www.toymoban.com/news/detail-426390.html

到了这里,关于基于ansible初始化linux服务器基础环境。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 阿里云服务器如何初始化云盘(跟换系统)?初始化云盘和跟换操作系统的区别?

            若在Linux系统(服务器)上,环境安装出错,可通过云服务器上初始化云盘,回归硬盘初始化状态,进行重新安装。         作为小白的我们,第一次在服务器中下载安装软件,并部署环境,难免万般出错,然而想要完全卸载软件,甚是初始化到原来的系统环境,依

    2023年04月08日
    浏览(53)
  • 麒麟服务器系统mariadb安装与初始化

    系统版本: 如果服务器无法连接外网,并且没有预装 mariadb ,那么就需要先配置镜像源,然后才能安装 mariadb 。如果你的服务器可以连接外网,那么可以跳过这一步,直接按照第3步中的方法安装 mariadb 。 上传系统镜像到服务器 这里我把系统镜像上传到 /root 目录。 挂载系统

    2024年02月07日
    浏览(90)
  • PLSQL连接远端Oracle服务器提示:“Initialization error ***不能初始化 oci.dl ***”的解决方案

    【PLSQL连接远端Oracle服务器提示:“Initialization error ***不能初始化 oci.dl ***”的解决方案】 继上篇如题报错提示如何解决事项: 1、其一、确认Oracle服务端、客户端、PLSQL Developer都必须位数一致,32bit/64bit,如出现位数不一致则无法加载。Oracle Instant Client 下载官网 2、其二、配

    2024年02月15日
    浏览(47)
  • 华为云云服务器评测|初始化配置SSH连接 & 安装MySQL的docker镜像 & 安装redis以及主从搭建 & 7.2版本redis.conf配置文件

    1.云耀云服务器L实例初始化配置,设置密码,ssh连接; 2.安装docker,安装运行mysql容器; 3.redis镜像的拉取,创建运行容器; 4.搭建redis主从,一主一从,7.2版本的redis.conf配置文件; 设置密码,官方要求复杂一点 进行远程登陆配置 添加开放的端口 在finalShell中新建SSH连接 系统

    2024年02月10日
    浏览(60)
  • 基于RK3588的嵌入式linux系统开发(一)——开发环境的搭建(SDK解压与本地初始化)

    1、拷贝rk3588的linux-sdk压缩包到工作目录,如下所示: 图1 拷贝rk3588的sdk到工作目录 2、进入sdk目录进行MD5码的计算,并对比md5sum.txt文件内的值,确保压缩包未被修改。 图2 MD5码计算与匹配 3、安装p7zip-full工具,并解压rk3588的sdk压缩包,如下图所示: sudo apt-get install p7zip-full

    2023年04月12日
    浏览(50)
  • Linux内存初始化-启动阶段的内存初始化

    本文代码基于ARM64平台, Linux kernel 5.15 在加载kernel 之前, kernel对于系统是有一定要求的,明确规定了boot阶段必须要把MMU关闭: 那么在进入kernel之后, 就必须有一个使能MMU, 建立映射的过程, 本文描述kernel启动阶段进行内存初始化相关的操作。 在初始化阶段,我们mapping二段

    2024年02月08日
    浏览(78)
  • media设备节点初始化与Video4Linux初始化

    media_devnode_init函数是一个内核初始化函数,用于在Linux内核启动期间进行设备节点初始化。 函数的主要作用是创建媒体设备节点(device node)并将其注册到系统的设备树中。媒体设备节点用于表示媒体设备(如摄像头、音频设备等),它们在/dev目录下以特定的名称存在,并允

    2024年02月05日
    浏览(44)
  • Linux:Linux初始化配置指南

    在安装完Linux操作系统后,我们需要执行一些操作以确保系统正常运行并满足我们的需求。下面是一些常见的虚拟机系统安装后操作: 设置root密码: 首先,我们应该设置root用户的密码。可以使用以下命令设置root密码: 创建普通用户: 为了安全起见,应该创建一个普通用户

    2024年02月10日
    浏览(46)
  • AliLinux的使用Docker初始化服务(详细)

    AliLinux是基于CentOS的。 1、java 环境 2、mysql环境 3、kafka环境 4、flink环境 5、dinky环境 这些环境,本想直接dnf安装在宿主机上,思来想去,还是用docker方便学习,也方便统一管理和使用 sudo dnf update sudo dnf upgrade 2.1、熟悉docker的命令 2.2、添加Docker存储库 需要注意不同的linux的版本

    2024年02月21日
    浏览(50)
  • 最小化安装Linux系统初始化脚本

    目录 最小化安装Linux系统初始化脚本 注:此脚本适用于centos 7/8、Ubuntu1804,具体需要根据实际情况进行测试调整。 此脚本包含的功能: 允许 root 用户使用 ssh 登录 关闭 selinux 关闭防火墙 设置 ps1 设置默认编辑器为 vim 自定义 vim 自定义历史命令 修改内核参数 设置资源限制 修

    2024年02月12日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包