安装ansible
[root@centos7 ~]# yum install -y ansible
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.bfsu.edu.cn
* extras: mirrors.bfsu.edu.cn
* updates: mirrors.neusoft.edu.cn
base | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
updates/7/x86_64/primary_db | 13 MB 00:00:10
没有可用软件包 ansible。
错误:无须任何处理
需要先安装
[root@centos7 ~]# yum install -y epel-release
[root@centos7 ~]# yum install -y ansible
配置机器信息
- root账号登录ansible机器,创建文件夹playbooks;
- playbooks目录下创建名为hosts的文件,内容如下,cdh-group是群组名,该群组内有一个机器配置信息,包含名称、IP地址,SSH端口,SSH账号密码等:
[root@centos7 playbooks]# pwd
/root/playbooks
[root@centos7 playbooks]# cat hosts
[k8s-group]
master0 ansible_host=172.70.10.161 ansible_port=22 ansible_user=root ansible_password=******
master1 ansible_host=172.70.10.162 ansible_port=22 ansible_user=root ansible_password=******
node1 ansible_host=172.70.10.163 ansible_port=22 ansible_user=root ansible_password=******
node2 ansible_host=172.70.10.164 ansible_port=22 ansible_user=root ansible_password=******
node3 ansible_host=172.70.10.165 ansible_port=22 ansible_user=root ansible_password=******
node4 ansible_host=172.70.10.166 ansible_port=22 ansible_user=root ansible_password=******
- laybooks目录下创建名为ansible.cfg的文件,内容如下,这是个ansible的配置文件,执行ansible命令时用到,这里面指定了主机信息在hosts文件中查找:
[root@centos7 playbooks]# cat ansible.cfg
[defaults]
inventory = ~/playbooks/hosts
host_key_checking = False
forks = 6
体验
[root@centos7 playbooks]# ansible -i /root/playbooks/hosts all -m shell -a "free -g"
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
master0 | CHANGED | rc=0 >>
total used free shared buff/cache available
Mem: 15 0 12 0 2 14
Swap: 7 0 7
master1 | CHANGED | rc=0 >>
total used free shared buff/cache available
Mem: 15 0 12 0 2 14
Swap: 7 0 7
node2 | CHANGED | rc=0 >>
total used free shared buff/cache available
Mem: 15 0 12 0 2 14
Swap: 7 0 7
node4 | CHANGED | rc=0 >>
total used free shared buff/cache available
Mem: 15 0 12 0 2 14
Swap: 7 0 7
node3 | CHANGED | rc=0 >>
total used free shared buff/cache available
Mem: 15 0 12 0 2 14
Swap: 7 0 7
node1 | CHANGED | rc=0 >>
total used free shared buff/cache available
Mem: 15 0 12 0 2 14
Swap: 7 0 7
体验playbook
(base) [root@node1 playbooks]# cat install_docker.yaml
- name: install docker
hosts: k8s-group
gather_facts: True
tasks:
- name: add repo
shell: cd ~ && mkdir tmp && cd ~/tmp && wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo && mv docker-ce.repo /etc/yum.repos.d/
- name: install docker
yum: name=docker-ce
- name: add systemctl
shell: systemctl start docker && systemctl enable docker
执行:
(base) [root@node1 playbooks]# ansible-playbook install_docker.yaml
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
PLAY [install k8s] ****************************************************************************************************************************************************************************************
TASK [Gathering Facts] ************************************************************************************************************************************************************************************
ok: [node4]
ok: [node2]
ok: [node1]
TASK [add repo] *******************************************************************************************************************************************************************************************
changed: [node4]
changed: [node2]
changed: [node1]
TASK [install docker] *************************************************************************************************************************************************************************************
ok: [node4]
ok: [node2]
ok: [node1]
TASK [add systemctl] **************************************************************************************************************************************************************************************
changed: [node2]
changed: [node4]
changed: [node1]
PLAY RECAP ************************************************************************************************************************************************************************************************
node1 : ok=4 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
node2 : ok=4 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
node4 : ok=4 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
备注:
# ansible-playbook a.yml --syntax-check #检查yaml文件的语法是否正确
# ansible-playbook a.yml --list-task #检查tasks任务
# ansible-playbook a.yml --list-hosts #检查生效的主机
# ansible-playbook a.yml --start-at-task='Copy Nginx.conf' #指定从某个task开始运行
同步目录
(base) [root@node1 playbooks]# ansible -i /root/playbooks/hosts all -m copy -a "src=/root/tmp/ dest=/root/tmp/"
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
node4 | CHANGED => {
"changed": true,
"dest": "/root/tmp/",
"src": "/root/tmp/"
}
node2 | CHANGED => {
"changed": true,
"dest": "/root/tmp/",
"src": "/root/tmp/"
}
node1 | SUCCESS => {
"changed": false,
"dest": "/root/tmp/",
"src": "/root/tmp/"
}
fileinline模块
名称 | 必选 | 默认值 | 可选值 | 备注 |
---|---|---|---|---|
backrefs | no | no | yes/no | 如果打开这个标记,backrefs会改变模块的一些操作:insertbefore和insertafter参数会被忽略。当regexp不匹配文件中的任何行时,文件不会做任何修改,否则 使用扩展的line参数 替换 最后一个匹配正则表达式的行 |
backup | no | no | yes/no | 用于创建一个包含时间戳信息的备份文件。以便在错误的修改了文件的时候,能够找回原始的文件 |
create | no | no | yes/no | 与state=present一起使用。如果指定了这个参数,当要修改的文件不存在的时候,会创建它。否则会报错。 |
group | no | 设置文件/目录的所属组 | ||
insertafter | no | EOF | EOF/regex | 当regexp不匹配文件中的任何行的时候,会将新行插入到其所指定的正则表达式匹配的行中的最后一行的后面。insertafter也支持一个特殊的值:EOF(代表文件的末尾)。若没有匹配的行,那么就会插入EOF |
insertbefore | no | BOF/regex | 当regexp不匹配文件中的任何行的时候,会将line参数所指定的行,插入到insertbefore所指定的正则表达式匹配的行中的最后一行的前面,当insertbefore所指定的正则表达式不匹配任何行时,会插入到文件的末尾,同时insertbefore还可以是一个特殊的值:BOF(代表文件的开始);否则,会使用line参数所指定的行替换regexp所匹配的行中的最后一行。 | |
line | no | 要插入或者替换的行。如果设置了backrefs参数,那么line中可以包含位置分组或命名分组,lineinfile模块会使用regexp捕获的分组填充它们 | ||
mode | no | “设置文件权限,模式实际上是八进制数字(如0644),少了前面的零可能会有意想不到的结果。从版本1.8开始,可以将模式指定为符号模式(例如u+rwx或u=rw,g=r,o=r)” | ||
others | no | file模块的其他参数可以在这里使用 | ||
owner | no | 设置文件/目录的所属用户 | ||
path | yes | "要修改的文件,也可以使用dest | ||
regexp | no | 用于搜索文件中的每一行的正则表达式。对于state=present,这个正则表达式所匹配的行中的最后一行会被替换;对于state=present,会删除所有匹配的行 | ||
state | no | present | present/absent | 用于设置 新增或替换一行,还是删除行 |
unsafe_writes | no | yes/no | 是否以不安全的方式进行,可能导致数据损坏 | |
validate | no | None | 复制前是否检验需要复制目的地的路径 |
prompt提示变量----根据提示输入变量的值
---
- hosts: test1
vars_prompt:
- name: iname
prompt: "请输入用户名"
private: no #回显用户名
- name: ipasswd
prompt: "请输入密码"
private: yes #不显示密码
tasks:
- name: Create a user
user:
name: "{{iname}}"
password: "{{ipasswd | password_hash('sha512')}}"
5.vars_files—单独定义变量文件
1.#先定义一个变量文件variables.yml
iname: ice #变量名称是自定义的
ipass: ‘123456’
2.#引用定义文件
- host: test1
var_files: variables.yml
tasks:- name: create user
user:
name: “{{iname}}”
password: “{{ipass | password_hash(‘sha512’)}}”
6.-e------定义变量
————————————————
版权声明:本文为CSDN博主「井底蛙跳出来了」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chenzhiweiguang/article/details/122861809
- name: create user