DevOps 之 Ansible入门实践(一)

本文将介绍在Ansible 以及 Galaxy 的基本使用。

本文默认操作环境为 Mac.

安装Ansible[^1]

sudo pip install ansible 即可完成安装。

配置conf

创建并编辑ansible的hosts文件

# /etc/ansible/hosts是默认路径
sudo mkdir /etc/ansible
sudo vi /etc/ansible/hosts

添加内容如

[web-server]
192.168.1.134

[mysql]
192.168.1.133:2222

如果远程的ssh端口修改了不在22标准端口,文件内容中机器地址应该明确指定端口号如:192.168.1.134:2222

authorized_keys授权

新建一个基本的playbook文件 copyKey.yml

- name: cp sshKey
  hosts: all
  user: root
  become: yes

  tasks:
       - name: Placing key
         authorized_key: user=root key="{{ lookup('file', '/home/{***}/.ssh/id_rsa.pub') }}"

注意 key 的文件本地目录地址的修改。

hosts 也可以改成 web-server 来指定 只操作 该主机。

执行命令 ansible-playbook copyKey.yml --ask-pass --user=root

--ask-pass 即 显示的 问你输入服务的密码.

ping test

上述的copyKey 执行成功后,执行 ansible web-server -m ping -u root

正确回应

192.168.1.134 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

Playbook[^2]

playbooks使用yaml语法,在ansible中几乎所有的yaml文件都是以list开始,每个item是键值对的list。

所有的yaml文件都以---开头表示开始一个document,所有的列表元素以-开头,键值对用:,后面的空格是必须的。(如果官网文档中有指出空格那一定是merge了我的pull request_)

键值对中的值如果是bool类型的字符串true/false(首字母不论大小写),pyyaml会load成python中对应的bool值,在键值对中如果值中有:或者以{{开头的变量定义,则必须用引号引起来

示例如下:

- name: Hello Ansible - quick start
  hosts: web-server
  user: root
  become: yes

  tasks:
    - name: Hello server
      shell: date >> now.txt

上述的示例 即 在 now.txt 中 写入一行Date信息

常用的Task Module[^4]

例如上述的Hello server 即 使用到了 shell[^5] 模块.

authorized_key | - Adds or removes an SSH authorized key

command | - Executes a command on a remote node

copy | - Copies files to remote locations

apt_repository | - Add and remove APT repositories

apt| - Manages apt-packages

所有的Task Module 参考 这里

Ansible Galaxy[^3]的使用

Mysql 安装示例

找到 geerlingguy.mysql,它是MySQL server for RHEL/CentOS and Debian/Ubuntu.的ROLE.

执行 ansible-galaxy install geerlingguy.mysql 安装到本地.

在新建一个 mysql.yml 的文件

- hosts: [mysql]
  become: yes
  vars_files:
    - vars/main.yml
  roles:
    - {role: geerlingguy.mysql }

同个目录下 新建 vars 目录,并新建 main.yml 文件

mysql_root_password: 123456
mysql_databases:
  - name: ***-base
    encoding: utf8mb4
    collation: utf8mb4_unicode_ci
mysql_users:
  - name: ***-base
    host: "%"
    password: xxxxx
    priv: "***-base.*:ALL"

执行命令 ansible-playbook mysql.yml,则目标服务器则自动安装mysql。

未完待续,下篇文章将讲述如何快速的初始化一台J2EE环境的服务器.

参考列表

欢迎大家关注我的简书,不定时更新文章。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容