专栏名称: 运维帮
互联网技术分享平台,分享的力量。帮主一直坚信技术可以改变世界,从毕业到现在干了15年运维,有许多话要和你说。
目录
相关文章推荐
51好读  ›  专栏  ›  运维帮

Ansible介绍,动态 Inventory

运维帮  · 公众号  · 运维  · 2018-12-11 16:25

正文

请到「今天看啥」查看全文


这个脚本不仅提供主机和组的信息.如果运行了 ‘setup’ 模块(只要使用 playbooks,’setup’ 模块会自动运行),变量 a, b, c 可按照以下模板自动填充:

# file: /srv/motd.j2
Welcome, I am templated with a value of a={{ a }}, b={{ b }}, and c={{ c }}

模板的使用如下:

ansible webserver -m setup
ansible webserver -m template -a "src=/tmp/motd.j2 dest=/etc/motd"

Note

组名 ‘webserver’ 是 cobbler 中定义的.你仍然可以在 Ansible 的配置文件中定义变量. 但要注意,变量名相同时,外部 inventory 脚本中定义的变量会覆盖 Ansible 中的变量.

执行上面命令后,主机 foo 的/etc/motd文件被写入如下的内容:

Welcome, I am templated with a value of a=2, b=3, and c=4

主机 ‘bar’ (bar.example.com)的 /etc/motd 中写入如下内容:

Welcome, I am templated with a value of a=2, b=3, and c=5

你也可以通过下面这个命令测试变量的替换:

ansible webserver -m shell -a "echo {{ a }}"

也就是说,你可以在参数或命令操作中使用变量的替换.

AWS EC2 外部 inventory 脚本

使用 AWC EC2时,维护一份 inventory 文件有时不是最好的方法.因为主机的数量有可能发生变动,或者主机是由外部的应用管理的,或者使用了 AWS autoscaling.这时,使用 EC2 external inventory 脚本是更好的选择.

脚本的使用方式有两种,最简单的是直接使用 Ansible 的命令行选项 -i ,指定脚本的路径(脚本要有可执行权限):

ansible -i ec2.py -u ubuntu us-east-1d -m ping

第二种方式,把脚本拷贝为 /etc/ansible/hosts ,并赋予可执行权限.还需把 ec2.ini 文件拷贝到 /etc/ansible/ec2.ini ,然后运行 ansible.

要成功的调用 API 访问 AWS,需要配置 Boto (Boto 是 AWS 的 Python 接口).可用的方法有多种,请参见: methods .

最简单的方法是定义两个环境变量:

export AWS_ACCESS_KEY_ID='AK123'
export AWS_SECRET_ACCESS_KEY='abc123'

如何知道配置是否正确,执行脚本来测试:







请到「今天看啥」查看全文


推荐文章
浙江大学  ·  再见,学生会
8 年前
古典古少侠  ·  幸福践行课之 5 :宜感恩
8 年前