闲来无事,写一下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:
- httpd
- httpd-devel - name: "复制配置文件" copy: src: "{{ item.src }}" dest: "{{ item.dest }}" owner: root group: root mode: 0644 with_items:
- { 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,我们用到了几个模块。