1.原理:通过limit的参数,限制新定义的服务器。即可给新买的服务器初始化优化。(如下图所示)

首先我们编写一个总入口的palybook脚本: init.yml

---
- hosts: all
user: root
gather_facts: true
roles:
- ../../init

第二步:创建相对应的目录。这些目录都有各自的功能。

mkdir {file,tasks,vars}                // 具体的目录和功能,可以上网查一下。

第三步:进入到vars目录下定义hosts的内置变量

vim main.yml
---
HOSTNAME: "{{ inventory_hostname }}"
IP: "{{ ansible_eth0['ipv4']['address'] }}"

第四步:进入到tasks目录下,创建任务的脚本。

main.yml作为整个tasks目录的总入口,是必须有这个配置

vim main.yml
---
- name: 复制 PS1 变量
copy:
src: ps1.sh
dest: /etc/profile.d/
- shell: source /etc/profile
- include_tasks: init_hostname.yml # include类似于子配置脚本。
- include_tasks: init_user.yml
- include_tasks: init_tools.yml

子脚本1

vim init_user.yml
---
# 创建用户。generate_ssh_key参数是生成公钥和私钥。我这里主要是生成.ssh目录,然后推送authorized_key
- name: create user
user: name="{{ item}}" append=yes generate_ssh_key=yes
with_items:
- ops
- dev
# 推送用到authorized_key模块
- name:
authorized_key: user={{ item }} key={{ lookup('file', '/home/{{ item }}/.ssh/id_rsa.pub') }}
with_items:
- ops
- dev

子脚本2

vim init_tools.yml
---
- name: 安装基本命令
yum: name={{ item }}
with_items:
- epel-release
- telnet
- vim
- unzip
- tree
- net-tools
- git
- screen

子脚本3

vim init_hostname.yml
---
- name: update file (/etc/sysconfig/network)
lineinfile:
dest: /etc/sysconfig/network
regexp: '^HOSTNAME'
line: 'HOSTNAME={{ HOSTNAME }}'
when: ansible_distribution == 'CentOS' and ansible_distribution_major_version == "" - name: execute hostname command
shell: hostname {{ HOSTNAME }}
when: ansible_distribution == 'CentOS' and ansible_distribution_major_version == "" - name: set hostname for centos7
shell: hostnamectl set-hostname "{{ HOSTNAME }}"
when: ansible_distribution == 'CentOS' and ansible_distribution_major_version == ""

上面还定义了一个拷贝文件的任务。所以我们在要files的目录下,放上你要用到的文件

vim ps1.sh
# 更改 PS1 显示
export PS1='[\[\e[36m\]\u\[\e[33m\]@\[\e[34m\]\H\[\e[33m\]:\[\e[32m\]\w\[\e[0m\]]\$ '
# 历史命令
HISTSIZE=

这样,一个简单的role角本就写好了。下面我们来创建新的虚拟机,添加hosts文件。验证一下结果吧

添加hosts文件

验证结果

这样,通过ansible的playbook,就可以对新的服务器进行初始化了。

ansible-playbook编写服务器初始化脚本的更多相关文章

  1. ansible roles实践——服务器初始化

    1.服务器初始化可以做哪些工作 关闭selinux ntp同步时间 修改dns为自建dns 配置ssh互信 修改yum源 设置主机名 内核参数优化 安装jdk 2.roles编写

  2. Ansible playbook编写Apache角色

    编写Apache角色:使用源码安装 在files中下载扩展包和安装包 [root@localhost project]# ls roles/httpd/files/ apr-1.6.5.tar.gz ...

  3. Ansible playbook 批量修改服务器密码 先普通后root用户

    fsckzy   Ansible playbook 批量修改服务器密码 客户的需求:修改所有服务器密码,密码规则为Rfv5%+主机名后3位 背景:服务器有CentOS6.7,SuSE9.10.11,r ...

  4. Ubuntu 系统服务器初始化配置、安全加固、内核优化和常用软件安装的Shell脚本分享

    转载自:https://www.bilibili.com/read/cv13875402?spm_id_from=333.999.0.0 描述: 适用于企业内部 Ubuntu 操作服务器初始化.系统安 ...

  5. CentOS7 系统服务器初始化配置、安全加固、内核升级优化常用软件安装的Shell脚本分享

    转载自:https://www.bilibili.com/read/cv13875630?spm_id_from=333.999.0.0 描述: 适用于企业内部 CentOS7 系列操作服务器初始化. ...

  6. linux软件管理之------编译安装nginx服务器并手动编写自动化运行脚本

    红帽系列的 linux软件管理分为三类:1. rpm 安装软件.2. yum 安装软件.3. 源码包编译安装.前面两种会在相关专题给出详细讲解.源码包的编译安装是非常关键的,我们知道linux的相关版 ...

  7. ansible笔记(10):初识ansible playbook

    ansible笔记():初识ansible playbook 假设,我们想要在test70主机上安装nginx并启动,我们可以在ansible主机中执行如下3条命令 ansible test70 -m ...

  8. 2.Ansible Playbook剧本

    1.playbook?playbook翻译过来就是"剧本",那playbook组成如下 play: 定义的是主机的角色 task: 定义的是具体执行的任务 playbook: 由一 ...

  9. Ansible-playbook服务器初始化

    一.什么是Playbook playbook可以理解为ansible的shell脚本,它是一个编排工具,作用是使用编排出能够重复利用的ansible脚本,并并发处理多台服务器. 二.playbook使 ...

随机推荐

  1. python基础【2】——python数据类型之字符串

    python数据类型-字符串 一. 字符串的表示方法(str) 作用: 记录文本信息 表示方法:' ' 单引号 " "双引号 ''' '''三单引号 ""&qu ...

  2. UITextFeild的基本属性

    textField 基本属性   _textField.frame = CGRectMake(0, 0, 200, 50); _textField.delegate = self; _textFiel ...

  3. UVALive 4043 转化最佳完美匹配

    首先黑点和白点是组成一个二分图这毫无疑问 关键是题目中要求的所有黑白配的线不能交叉...一开始我也没想到这个怎么转化为二分图里面的算法. 后来看书才知道,如果两两交叉,则可以把两根线当四边形的对角线, ...

  4. POJ 2226 缩点建图+二分图最大匹配

    这个最小覆盖但不同于 POJ 3041,只有横或者竖方向连通的点能用一块板子覆盖,非连续的,就要用多块 所以用类似并查集方法,分别横向与竖向缩点,有交集的地方就连通,再走一遍最大匹配即可 一开始还有点 ...

  5. 实验吧web-易-拐弯抹角(url伪静态)

    <?php // code by SEC@USTC echo '<html><head><meta http-equiv="charset" c ...

  6. Python Email发送,通知业务完成

    Email 发送 #!/usr/bin/python # -*- coding: UTF-8 -*- import base64 import smtplib from email.mime.text ...

  7. POJ - 1742 Coins(dp---多重背包)

    题意:给定n种硬币的价值和数量,问能组成1~m中多少种面值. 分析: 1.dp[j]表示当前用了前i种硬币的情况下,可以组成面值j. 2.eg: 3 10 1 3 4 2 3 1 (1)使用第1种硬币 ...

  8. VC++ DLL 3 动态链接库

    前面先介绍了静态链接库的方式提供了函数结构的方法,现在就来说下,如果用非MFC的动态链接库要怎么实现,这个过程稍微复杂一点点,但是基本也都是一个套路下来. 1.新建一个工程: 2.编写cpp文件和头文 ...

  9. h5-动画基本介绍

    1.介绍 *{ ; ; } div{ width: 200px; height: 200px; background-color: #5aff61; /*添加动画效果*/ /*1.animation- ...

  10. 使用Dom4j生成xml文件(utf-8编码)

    xml文件内容: <?xml version="1.0" encoding="UTF-8"?> <result> <code> ...