闲来无事,写一下ansible相关的小知识吧。
1.ansible的 Ad-Hoc
什么是Ad-Hoc呢,很简单就是临时命令,就是相对于playbook直接可以执行的,简单举例。
ansible -i /tmp/host_test.txt -m command -a "hostname" -f 2
ansible -i /tmp/test.txt -f5 -m ping
这样就是最简单可以直接执行的,至于-i,-m,-f,-v,-s,-u等等这些参数指令,简单说几个,其他的自行查去吧。
-i --inventory=PATH 一般指定hosts位置,默认是在/etc/ansible/hosts
-m 指定使用的模块
-f 线程并发数
-v 输出更详细,-vvv 输出执行过程
-s --sudo执行sudo命令
-u --user 指定用户执行
这应该是很清楚了--------(懒得写了)
2.ansible的playbook
首先明确playbook采用yaml语法编写,数据结构通过缩进表示,连续的项目通过“-”来表示,key/value通过“:”来分隔,文件开头“---”,必须包含task,name
最简单shell可以转化为playbook,简单举个例子:
#!/bin/bash
yum install -y httpd httpd-devel
cp /tmp/httpd.conf /etc/httpd/conf/httpd.conf
service httpd restart
chkconfig httpd on
####################################
- hosts: all
sudo: yes
tasks:- name: "安装apacher"
yum: name={{ item }} state=present
with_items:
- name: "安装apacher"
- httpd
- httpd-devel
- name: "复制配置文件"
copy:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
owner: root
group: root
mode: 0644
with_items:
- name: "复制配置文件"
- {
src: "/tmp/httpd.conf"
dest: "/etc/httpd/conf/httpd.conf"}
-{
src: "/tmp/httpd-devel.conf"
dest: "/etc/httpd/conf/httpd-devle.conf"}
}
-name: "检查开机自启"
service: name=httpd state=present enabled=yes
#############################################
可以看到已经转化为标准的yaml的ansible-playbook,我们用到了几个模块。