ansible写roles的时候tasks里面需要多个yum的服务需要一起安装,不需要指定多个name,看下面的,正常写是yum: name=ipset state=present
这样一般就安装一个像多个包一起安装这样更方便
- name: 安装ipvsadm管理工具yum:name:- ipset- ipvsadmstate: present
在ansible当中file模块还支持chmod 权限的更改那就是mode
正常写是file: path=目录 mode=755
- name: 为ipvs模块配置授予755权限file: path=/etc/sysconfig/modules/ipvs.modules mode=0755
另外file模块还支持创建用户以及用户组,并将chown修改为所属组和所属主
- name: Create etcd usersuser:name: etcd- name: Create an etcd user groupgroup:name: etcd- name: Modify the user and user group to which the etcd belongsfile:path: /var/lib/etcdstate: directory #####换成文件为touchowner: etcdgroup: etcdrecurse: yes ####此项为递归选项
systemd模块
name: 服务名,例如crond.service,最好带上后缀.service
state: 需要的操作,reloaded, restarted, started, stopped
enabled:是否需要开机启动
daemon_reload:systemd 读取配置文件,每次修改了文件,最好都运行一次,确保应用了
- name: 重启docker服务,生效所有配置,并设为开机启动systemd:daemon_reload: yesstate: restartedenabled: yesname: docker.service
错误忽略模块
有的命令可以执行成功但是会报错,我们希望忽略掉,不然Ansible不会继续执行
- name: 启动haproxyshell:bash "{
{ha_dir}}"/start-haproxy.sh bashignore_errors: yes
ansible模块之文件末尾追加blockinfile模块
- name: 配置kubectl命令blockinfile:path: ~/.bashrcblock: export KUBECONFIG=/etc/kubernetes/admin.conf- name: 生效配置shell: source ~/.bashrc
blockinfile在末尾追加的话只能修改一次,默认再增加会覆盖之前的操作
可以使用lineinfile,在末尾单自在末尾的去添加
- name: add etcd priority to rc.locallineinfile:dest: /etc/rc.localline: |renice -n -20 -P $(pgrep etcd)ionice -c2 -n0 -p $(pgrep etcd)
k8s内核导入模块,两种方式,通过直接写一个site.yaml的模版写个tasks,或者直接使用incloud导入
#cat site-kernel-optimization.yml ---
####################################################################################
##kernel optimization
#####################################################################################
- name: kernel optimizationgather_facts: falsebecome: yeshosts:- dockerroles:- kernel-optimizationtags: kernel-optimization
#cat roles/kernel-optimization/tasks/kubelet.yml ---
- name: The kernel optimizationsysctl:name: "{
{ item.name }}"value: "{
{ item.value }}"sysctl_file: /etc/sysctl.d/90-kubelet.confsysctl_set: yesstate: presentreload: yesbecome: truewith_items:- { name: 'vm.overcommit_memory', value: '1'}- { name: 'vm.panic_on_oom', value: '0' }- { name: 'kernel.panic', value: '10'}- { name: 'kernel.panic_on_oops', value: '1'}- { name: 'kernel.keys.root_maxbytes', value: '25000000'}ignore_errors: true
或者直接放在一个site.yml的tasks里面,使用include导入,前提
目录下面有这个tasks/kubectl.yml
#ls
kubelet.yml main.yml ---- include_tasks: kubelet.yml
另外还可以写一个site-all.yml的模版将选用的site-xxxx 某个模块或者功能加入到这个里面,也就是部署的时候按照这个统一的来进行执行
- name: install k8shosts: localhostconnection: localtasks:- debug:msg:- "*****************************************************************"- ">>>>>>>>>>>>>>>>>>>>>include site-k8s-install.yml<<<<<<<<<<<<<<<<"- "*****************************************************************"- "* ┌─┐ ┌─┐ + +"- "* ┌──┘ ┴───────┘ ┴──┐++"- "* │ │"- "* │ ─── │++ + + +"- "* ███████───███████ │+"- "* │ │+"- "* │ ─┴─ │"- "* │ │"- "* └───┐ ┌───┘"- "* │ │"- "* │ │ + +"- "* │ │"- "* │ └──────────────┐"- "* │ │"- "* │ ├─┐"- "* │ ┌─┘"- "* │ │"- "* └─┐ ┐ ┌───────┬──┐ ┌──┘ + + + +"- "* │ ─┤ ─┤ │ ─┤ ─┤"- "* └──┴──┘ └──┴──┘ + + + +"- "* 神兽保佑"- "* 代码无BUG!"
- include: site-k8s-install.yml