ansible
-
安装
主控端: apt install python-pip -y yum install python-pip -y easy_istall python-pip //macOS pip install -U pip //升级pip pip install ansible 被控端(需要依赖 OpenSSH server 和 Python ): apt install openssh-server python2.7 -y yum install -y openssl-server python
-
配置 默认配置文件路径:
/etc/ansible/
通常会将 ansible.cfg 和 hosts 这两个档案与其它的 Playbooks 放在同个专案目录底下,然后通过版本控制系统 (例如 Git) 把它们一起储存起来,以实现 Ansible 的 Infrastructure as Code(基础设施代码)!
“基础设施即代码”是一种通过代码来定义计算和网络基础设施的方法,它可以应用于任何软件系统中。这样的代码放在源代码管理中,具有可审查性、可重用型,并且符合测试惯例,还完全遵从持续交付的原则。
- inventory 是什么? inventory 就单字本身有详细目录、清单和列表的意思。在这里我们可以把它当成是一份主机列表,我们可通过它对定义每个 Managed Node 的代号、IP 位址、连线相关资讯和群组。
Playbook
PlayBooks 是 Ansible 的脚本(Script),是比传统 Shell Script 更加结构化的脚本语言。
- Play:通常为某个特定的目的,例如:
- Setup a official website with wordpress(借由 wordpress建立官网)
- Retart the API Services(重启 API 服务)
- Task:是要实现 Play 这个目的所需要做的每个步骤,例如:
- Install the Apache(安装 Apache)
- Install the MySQL
- Moudule:Ansible 所提供的各种操作方法,例如:
- apt:name=vim state=present(使用 apt 套件安装 vim)
- command: /sbin/shutdown -r now (使用 shutdown 的命令重启)
Task 列表
每一个 play 包含了一个 task 列表(任务列表).一个 task 在其所对应的所有主机上(通过 host pattern 匹配的所有主机)执行完毕之后,下一个 task 才会执行.有一点需要明白的是(很重要),在一个 play 之中,所有 hosts 会获取相同的任务指令,这是 play 的一个目的所在,也就是将一组选出的 hosts 映射到 task。 在运行 playbook 时(从上到下执行),如果一个 host 执行 task 失败,这个 host 将会从整个 playbook 的 rotation 中移除。 每一个 task 必须有一个名称 name,这样在运行 playbook 时,从其输出的任务执行信息中可以很好的辨别出是属于哪一个 task 的。
tasks:
- name: make sure apache is running
service: name=httpd state=running
Handlers: 在发生改变时执行的操作
‘notify’ actions 会在 playbook 的每一个 task 结束时被触发,而且即使有多个不同的 task 通知改动的发生, ‘notify’ actions 只会被触发一次.
- name: template configuration file
template: src=template.j2 dest=/etc/foo.conf
notify:
- restart memcached
- restart apache
//‘notify’ 下列出的即是 handlers.
Handlers 最佳的应用场景是用来重启服务,或者触发系统重启操作。
模块
模块努力使自身幂等,这意味着它们会尽可能避免对系统做出改动除非那是必须的
- name: reboot the servers
command: /sbin/reboot -t now
每个模块的文档能够通过命令行的 ansible-doc 工具来获取:
ansible-doc yum //获取yum模块的文档
ansible-doc -l //列出所有已安装的模块文档