完成系统基础配置:
1、时区设置为Asia/Shanghai,时钟同步
2、主机名和hosts文件配置
3、公钥分发
上图是一张ansible roles的目录结构图,我们在创建roles时根据自己的需求创建各目录,用不到的目录可创建为空目录,或不创建 。
1、创建目录
~]# mkdir -p test/{tasks,templates,files,vars}
2、创建main.yml 文件
上图就是一个整体的目录结构
3、准备变量文件 vars/main.yml
ntp_server: 192.168.43.10
time_zone: Asia/Shanghai
(1)把Asia/Shanghai定义为变量,让task去引用这个变量,可以根据不同的场景修改;
(2)ntp server 设置成一个变量,并设置ntp server服务器地址;
4、准备配置文件templates/ntp.conf.j2
将已修改好的配置文件放在templates/下并以j2后缀
5、编写tasks/main.yml文件
因为任务不是很多,直接将所有task放入main.yml文件中。
(1)时区设置,只需一步,使用shell模块,去引用前面在vars中设置的变量time_zone,
- name: set timezone
shell: /usr/bin/timedatectl set-timezone {{ time_zone }}
(2)时钟同步: 需要两步完成,先设置ntp server ,使用template模块,将设置好的conf.j2配置文件复制到远程主机的etc下,然后重启ntpd,
- name: set ntp server
template:
src: ntp.conf.j2
dest: /etc/ntp.conf
- name: restart ntpd
systemd:
name:ntpd
daemon_reload: yes
state: started
(3)主机和hosts文件配置:将写好的host文件存放在hosts目录下,使用template模块,将host文件分发到其他主机;
- name: copy host file
template:
src: /etc/hosts
dest: /etc
(4)公钥分发部分
- name: create sshkey #创建sshkey
shell: ssh-keygen -N "" -f /root/.ssh/id_rsa -q #生成密钥对
- name: copy sshkey
authorized_key:
user: root #被控制的远程主机上的用户名
key: "{{ lookup('file','/root/.ssh/id_rsa.pub') }}" #本机的公钥地址
- name: close ssh check #关闭初次访问提示询问
shell: sed -i "s/^.*StrictHostKeyChecking.*$/ StrictHostKeyChecking no/g" /etc/ssh/ssh_config
- name: fetch copy #从各被控制主机将公钥拷贝到本机
fetch: src=/root/.ssh/id_rsa.pub dest=/tmp/ssh/
- name: append file authorized_keys.log #将各个公钥合并成一个文件
shell: find /tmp/ssh/* -type f -exec sh -c 'cat {}>>/tmp/ssh/authorized_keys.log' \;
run_once: true
- name: copy authorized_keys # 将合成的公钥进行分发
copy: src=/tmp/ssh/authorized_keys.log dest=/root/.ssh/authorized_keys mode=0600
6、编写主的test.yml文件调用test角色
- name: set timezone and ntpd
hosts: test
remote_user: root
roles:
- test
7、整体目录结构查看
8、执行playbook