【学习笔记】安锐思布尔
总结
最近,Y公司的自己的项目开始进行转型,因为在公司内部,Chef的管理问题相当严重,所以考虑将项目迁移到其他平台上。之前我们使用过Ansible,现在打算重新学习一下,购买一个课程来温习。
以下是一些相关信息:
– 学习Terraform:https://qiita.com/yaoluffy/items/9db0cc7eeabbd321e9b5
– 可以在Udemy上找到有关教材:https://www.udemy.com/course/learn-ansible/learn/lecture/11060794
本文
库存
一般来说,保存主机信息的文件通常是这样的样式。
# Sample Inventory File
# Web Servers
web1 ansible_host=server1.company.com ansible_connection=ssh ansible_user=root ansible_ssh_pass=Password123!
web2 ansible_host=server2.company.com ansible_connection=ssh ansible_user=root ansible_ssh_pass=Password123!
web3 ansible_host=server3.company.com ansible_connection=ssh ansible_user=root ansible_ssh_pass=Password123!
# Database Servers
db1 ansible_host=server4.company.com ansible_connection=winrm ansible_user=administrator ansible_password=Password123!
[web_servers]
web1
web2
web3
[db_servers]
db1
[all_servers:children]
web_servers
db_servers
执行手册
将安装、配置、启动、关闭等一系列操作写入一个YAML文件,形式如下。
-
name: 'Execute two commands on localhost'
hosts: localhost
tasks:
-
name: 'Execute a date command'
command: date
-
name: 'Execute a command to display hosts file'
command: 'cat /etc/hosts'
-
- 相当于Chef的cookbook
FYI: https://www.simplilearn.com/ansible-vs-chef-differences-article
用ansible-playbook启动(而非ansible命令)
task的执行顺序很重要,所以用队列来写(不能用map)
Jinja2 俊佳二
手册中使用了{{}}作为vars,在这里使用的是jinja2。
FYI: https://www.jianshu.com/p/f04dae701361
条件
在Ansible中,还有条件语句(when)和循环语句(loop)。当需要调用循环语句中的值时,可以使用item变量作为例子。
tasks:
- user: name='{{ item }}' status=present
loop:
- joe
- george
可以使用register将结果暂时保存起来,例如。
-
name: 'Add name server entry if not already entered'
hosts: localhost
tasks:
-
shell: 'cat /etc/resolv.conf'
register: command_output
-
shell: 'echo "nameserver 10.0.250.10" >> /etc/resolv.conf'
when: 'command_output.stdout.find("10.0.250.10") == -1'
角色 (jué sè)
在中文中概括地说,Role就像是共享的包,类似于引入(import)。
它方便地允许我们引用他人的内容,然后根据需要自定义具体使用哪些功能或对哪些功能进行修改。
我的感受
-
- 如果真的打算将postgresql移植到k8s上,ansible也没有必要使用了
想象一下,如果要用ansible又不想维护,那ansible在k8s的deployment将成为必要
直接写postgresql的deployment岂不是更加省事
因为容量之类的问题,导致无法在k8s上装postgres,那还是建议保持现状(因为ansible和chef的差别就不大了)
ansible的应用场景是建立在架构需要从实力开始的情形,即IaaS
换句话说,PaaS,CaaS都不需要ansible这项工具
IaaS的话,感觉和Terraform一起食用更佳
Katacoda
一个免费的一次性建立环境的在线工具