• ansible实现redis角色


    准备文件夹

    压缩包放在了/apps/redis/

    [root@centos8 ansible]# tree
    .
    ├── redis.tar.gz
    └── roles
        └── redis
            ├── defaults
            │   └── main.yml
            ├── files
            ├── handlers
            │   └── main.yml
            ├── meta
            │   └── main.yml
            ├── README.md
            ├── tasks
            │   └── main.yml
            ├── templates
            │   ├── redis.conf.j2
            │   └── redis.service.j2
            ├── tests
            │   ├── inventory
            │   └── test.yml
            └── vars
                └── main.yml
    
    10 directories, 12 files
    [root@centos8 ansible]# vim roles/redis/handlers/main.yml 
    
    ---
    - name: restart redis
      service:
        name: redis
        state: restarted
        enabled: true
    [root@centos8 ansible]# vim roles/redis/meta/main.yml 
    
    galaxy_info:
      author: your name
      description: your role description
      company: your company (optional)
    
      # If the issue tracker for your role is not on github, uncomment the
      # next line and provide a value
      # issue_tracker_url: http://example.com/issue/tracker
    
      # Choose a valid license ID from https://spdx.org - some suggested licenses:
      # - BSD-3-Clause (default)
      # - MIT
      # - GPL-2.0-or-later
      # - GPL-3.0-only
      # - Apache-2.0
      # - CC-BY-4.0
      license: license (GPL-2.0-or-later, MIT, etc)
    
      min_ansible_version: 2.9
    
      # If this a Container Enabled role, provide the minimum Ansible Container version.
      # min_ansible_container_version:
    
      #
      # Provide a list of supported platforms, and for each platform a list of versions.
      # If you don't wish to enumerate all versions for a particular platform, use 'all'.
      # To view available platforms and versions (or releases), visit:
      # https://galaxy.ansible.com/api/v1/platforms/
      #
      # platforms:
      # - name: Fedora
      #   versions:
      #   - all
      #   - 25
      # - name: SomePlatform
      #   versions:
      #   - all
      #   - 1.0
      #   - 7
      #   - 99.99
    
      galaxy_tags: []
        # List tags for your role here, one per line. A tag is a keyword that describes
        # and categorizes the role. Users find roles by searching for tags. Be sure to
        # remove the '[]' above, if you add tags to this list.
        #
        # NOTE: A tag is limited to a single word comprised of alphanumeric characters.
        #       Maximum 20 tags per role.
    
    dependencies: []
      # List your role dependencies here, one per line. Be sure to remove the '[]' above,
      # if you add dependencies to this list.
    [root@centos8 ansible]# vim roles/redis/tasks/main.yml 
    
        state: installed
    - name: create redis group
      group:
        name: redis
    - name: create redis user
      user:
        name: redis
        group: redis
        shell: /sbin/nologin
    - name: copy redis tar
      copy:
        src: redis-5.0.8.tar.gz
        dest: /apps/
    - name: tar xf
      shell: |
        tar xf /apps/redis-5.0.8.tar.gz -C /apps/
    - name: make
      shell: |
        make
      args:
        chdir: /apps/redis-5.0.8/
    - name: create redis dir
      file:
        path: "{{ item }}"
        state: directory
      with_items:
        - /apps/redis
        - /apps/redis/bin
        - /apps/redis/etc
        - /apps/redis/data
        - /apps/redis/log
        - /apps/redis/run
    - name: copy redis file
      shell:
        cp -r /apps/redis-5.0.8/src/*  /apps/redis/bin/
    - name: reder and copy redis config
      template:
        src: redis.conf.j2
        dest: /apps/redis/etc/redis.conf
        backup: yes
      notify: restart redis
    - name: change permission
      file:
        path: /apps/redis/
        owner: redis
        group: redis
        recurse: yes
    - name: join system management
      template:
        src: redis.service.j2
        dest: /usr/lib/systemd/system/redis.service
    - name: PATH variables
      copy:
        content: 'PATH=/apps/redis/bin:$PATH'
        dest: /etc/profile.d/redis.sh
    [root@centos8 ansible]# vim roles/redis/templates/redis.conf.j2
    bind {{ bind }}
    protected-mode yes
    port {{ port }}
    tcp-backlog 511
    timeout 0
    tcp-keepalive 300
    daemonize {{ daemonize }}
    supervised no
    pidfile {{ pidfile }}
    loglevel notice
    logfile ""
    databases 16
    always-show-logo yes
    save 900 1
    save 300 10
    save 60 10000
    stop-writes-on-bgsave-error yes
    rdbcompression yes
    rdbchecksum yes
    dbfilename {{ dbfilename }}
    dir {{ dir }}
    replica-serve-stale-data yes
    replica-read-only yes
    repl-diskless-sync no
    repl-diskless-sync-delay 5
    repl-disable-tcp-nodelay no
    replica-priority 100
    lazyfree-lazy-eviction no
    lazyfree-lazy-expire no
    lazyfree-lazy-server-del no
    replica-lazy-flush no
    appendonly no
    appendfilename "appendonly.aof"
    appendfsync everysec
    no-appendfsync-on-rewrite no
    auto-aof-rewrite-percentage 100
    auto-aof-rewrite-min-size 64mb
    aof-load-truncated yes
    aof-use-rdb-preamble yes
    lua-time-limit 5000
    slowlog-log-slower-than 10000
    slowlog-max-len 128
    latency-monitor-threshold 0
    notify-keyspace-events ""
    hash-max-ziplist-entries 512
    hash-max-ziplist-value 64
    list-max-ziplist-size -2
    list-compress-depth 0
    set-max-intset-entries 512
    zset-max-ziplist-entries 128
    zset-max-ziplist-value 64
    hll-sparse-max-bytes 3000
    stream-node-max-bytes 4096
    stream-node-max-entries 100
    activerehashing yes
    client-output-buffer-limit normal 0 0 0
    client-output-buffer-limit replica 256mb 64mb 60
    client-output-buffer-limit pubsub 32mb 8mb 60
    hz 10
    dynamic-hz yes
    aof-rewrite-incremental-fsync yes
    rdb-save-incremental-fsync yes
    [root@centos8 ansible]# vim roles/redis/templates/redis.service.j2 
    
    [Unit]
    Description=Redis persistent key-value database
    After=network.target
    
    [Service]
    ExecStart= {{ execstart }} {{ conf }} --supervised systemd
    ExecStop=/bin/kill -s QUIT $MAINPID
    Type=notify
    User=redis
    Group=redis
    RuntimeDirectory=redis
    RuntimeDirectoryMode=0755
    
    [Install]
    WantedBy=multi-user.target
    [root@centos8 ansible]# vim roles/redis/tests/inventory 
    localhost
    [root@centos8 ansible]# vim roles/redis/tests/test.yml 
    
    ---
    - hosts: localhost
      remote_user: root
      roles:
        - redis
    [root@centos8 ansible]# vim roles/redis/vars/main.yml 
    
    ---
    bind: 0.0.0.0
    port: 6379
    daemonize: "yes"
    pidfile: /apps/redis/run/redis.pid
    dbfilename: dumnp.rdb
    dir: /apps/redis/data/
    execstart: /apps/redis/bin/redis-server
    conf: /apps/redis/etc/redis.conf
  • 相关阅读:
    makeBackronym
    Regular Ball Super Ball
    Svn忽略配置
    How does it work in C#?
    Counting sheep...
    Convert boolean values to strings 'Yes' or 'No'.
    codeforces 236A . Boy or Girl(串水问题)
    cocos2d-x3.0 解释具体的新的物理引擎setCategoryBitmask()、setContactTestBitmask()、setCollisionBitmask()
    ACM字符串处理算法经典:字符串搜索
    MessageFormat类别:快速格式化字符串
  • 原文地址:https://www.cnblogs.com/zhangty333/p/13845063.html
Copyright © 2020-2023  润新知