OK!咱们搞自动化的除了学会各种语言及脚本编程外,还有几个重要的工具需要学习,那么其中最有名的当属ansible了。
波哥反思了一下,自诩干货最多的公众号却独独缺少了ansible这个一块重要内容,这是不可忍受的。而ansible也深入到了各个企业,成为了大部分企业的主干管理工具,现在企业招聘系统方面或者后端的工程师ansible都是必须要会的一个东西!那么往后的一段时间,我会详尽的给大家出一些ansible的脚本,以及ansible到底咋回事?我们该怎么用?最后波哥也会出一篇ansible部署一套openstack的playbook。
playbook一些理论性的知识波哥就不讲那么多了。波哥就大概给各位说说一些基本步骤:
代码语言:javascript复制yum install -y ansible
完成安装。
代码语言:javascript复制vim /etc/ansible/hosts
加入下面测试节点内容:
能看明白吧,一个账号,一个密码。
ansible我们主要深入研究playbook,其他的ansible玩法你们自己研究查。更理论的波哥就不打字了,有时间我会录一期视频内容跟大家聊聊这个东西。
咱们拿playbook写一篇多主机互信。下面就是,还是非常快的!
代码语言:javascript复制---
- hosts: ssh
gather_facts: false
remote_user: root
ignore_errors: yes
vars:
- AnsibleDir: /etc/ansible
tasks:
- name: enforce env
shell: source /etc/profile
- name: close ssh check
shell: sed -i "s/^.*StrictHostKeyChecking.*$/ StrictHostKeyChecking no/g" /etc/ssh/ssh_config
tags: ['close ssh check']
- name: delete rsa
file: path=/root/.ssh state=absent
- name: local delete rsa
file: path=/root/.ssh state=absent
connection: local
- name: generating public/private rsa key pair
shell: ssh-keygen -t rsa -b 2048 -N '' -f /root/.ssh/id_rsa
- name: view id_rsa.pub
shell: cat /root/.ssh/id_rsa.pub
register: sshinfo
- set_fact: sshpub={{sshinfo.stdout}}
- name: mkdir key path
file: path={{AnsibleDir}}/roles/templates state=directory
connection: local
- name: add ssh record
shell: echo {{sshpub}} >> {{AnsibleDir}}/roles/templates/authorized_keys.j2
connection: local
- name: copy authorized_keys.j2 to all
template: src={{AnsibleDir}}/roles/templates/authorized_keys.j2 dest=/root/.ssh/authorized_keys mode=0600
tags: ['install ssh']
因为代码比较少,我这个就直接贴在这里了。我们再执行的时候可以摘抄自己需要的步骤执行,例如波哥的所有环境都已经自己做了初始化,所有ssh修改config这步我就不用了。那么我的执行命令是:
代码语言:javascript复制ansible-playbook --skip-tags='close ssh check' sshKey.yml
skip-tags就是跳过标签!
其实主机互信就是将所有服务器指定用户生成的公钥keys的内容写入到对方的authorized_keys中就完成了。
那么我们再执行这个动作的时候要想好,第一步干啥,第二步干啥。然后安装你想好的顺序写playbook就行了。
当然波哥这个demo是最简单的了。我们在企业中肯定不会这么写的。什么都系都在一篇中那多难维护呀对吧!
更多内容等波哥做好了我们再一起学习吧!