Modern UI for Ansible

Overview

semaphore

Circle CI Codacy Badge Codacy Badge semaphore on discord

Release Signing

All releases after 2.5.1 are signed with the gpg public key 8CDE D132 5E96 F1D9 EABF 17D4 2C96 CF7D D27F AB82

Installation

https://github.com/ansible-semaphore/semaphore/wiki/Installation

Get it from the Snap Store

Demo

https://demo.ansible-semaphore.com

Login / password: demo / demo.

Contributing

PR's & UX reviews are welcome!

Please follow the contribution guide. Any questions, please open an issue.

License

MIT License

Copyright (c) 2016 Castaway Consulting LLC

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Comments
  • Possible to play local playbooks?

    Possible to play local playbooks?

    It would be really good if semaphore can also play playbooks from a local server in my n/w or on the host machine where I 've installed semaphore. I might not keep all my ansible code in github for various reasons.

    Please suggest if this can be released in future or it's not feasible at all.

    enhancement question 
    opened by ashish235 52
  • How its works ?

    How its works ?

    Hello, I'm new on github and semaphore. I do not quite understand how it works. I don't find documentation with a simple example. Can someone give me a simple example of creating a project from the beginning until its execution? Thanks a lot.

    opened by Thibaut-ids 46
  • Dynamic Inventory support

    Dynamic Inventory support

    I use aws with ansible, so dynamic inventory is used instead of adding hosts manually. Is this possible with semaphore? Documentation for running playbooks from local machine? I am not able see the documentation for running test playbooks with git repo, if I have missed it, can you point the documentation.

    enhancement 
    opened by lakshmantgld 31
  • So does this support LDAPS or not?

    So does this support LDAPS or not?

    I see there is an "ldap_needtls" boolean in the config, but I cant find any mention of how to make it work. My Semaphore works fine under normal LDAP, but where I want to use it, straight LDAP is not permitted and LDAPS must be used.

    If I add the "needtls: true" and change the port to 636, I get this error in the log when attempting to log in:

    Checking DB migrations MySQL [email protected]:3306 semaphore Tmp Path (projects home) /tmp/semaphore Semaphore v2.7.22 Interface Port :3000 Server is running INFO[0013] unable to read LDAP response packet: read tcp 172.17.0.11:34666->10.0.30.135:636: read: connection reset by peer

    This is a docker container, so I copied my root/intermediate CA certs into /etc/ssl/certs/ca-certificates.crt but that had no impact.

    bug 
    opened by KenK73 25
  • Updating repository Git - Ask password

    Updating repository Git - Ask password

    While running task, when Updating repository, the task don't progress. On shell, i can see process wait for password. Private key register in Key Store don't contain passphrase.

    I run ssh -T -i access_key_4 [email protected] and i am authentificated without password.

    I've tried an other private key and problem is similar.

    Thank you.

    opened by Neneow 23
  • Cron definition is ignored

    Cron definition is ignored

    I have a task with defined cron '0 0 * * 0' but it's not started based on this schedule. I'm not able to find any related logs.

    [email protected]:~# cat /etc/redhat-release 
    CentOS Stream release 8
    [email protected]:~# rpm -qa | grep semaphore
    semaphore-2.8.53-1.x86_64
    [email protected]:~# systemctl status semaphore
    ● semaphore.service - Semaphore Ansible
       Loaded: loaded (/etc/systemd/system/semaphore.service; enabled; vendor preset: disabled)
       Active: active (running) since Mon 2022-03-21 16:10:38 CET; 1 months 21 days ago
         Docs: https://github.com/ansible-semaphore/semaphore
     Main PID: 2530737 (semaphore)
        Tasks: 6 (limit: 23546)
       Memory: 68.9M
       CGroup: /system.slice/semaphore.service
               └─2530737 /usr/bin/semaphore service --config=/opt/semaphore/config.json
    

    Can you please suggest where to look / start debug?

    bug help wanted needs investigation 
    opened by zeten30 20
  • LDAP Support

    LDAP Support

    From what I've seen so far users are stored in the database. It would be nice to have LDAP support, so that one could use existing groups to match "roles" and people could use their central managed password.

    enhancement 
    opened by hhenkel 20
  • SSH bug?? Connection refused Failed to connect to new control master .

    SSH bug?? Connection refused Failed to connect to new control master .

    I was trying to run this from within a Docker container in Centos. I suspected that might be an issue and when I switched to using a VM it worked fine.

    In short,

    debug1: Authentication succeeded (publickey).
    nAuthenticated to 10.3.3.16 ([10.3.3.16]:22).
    debug1: setting up multiplex master socket
    debug3: muxserver_listen: temporary control path /root/.ansible/cp/ansible-ssh-10.3.3.16-22-ansible.WKmgczTyEdVwJpd4
    debug2: fd 4 setting O_NONBLOCK
    debug3: fd 4 is O_NONBLOCK
    debug3: fd 4 is O_NONBLOCK
    debug1: channel 0: new [/root/.ansible/cp/ansible-ssh-10.3.3.16-22-ansible]
    debug3: muxserver_listen: mux listener channel 0 fd 4
    debug2: fd 3 setting TCP_NODELAY
    debug3: ssh_packet_set_tos: set IP_TOS 0x08
    debug1: control_persist_detach: backgrounding master process
    debug2: control_persist_detach: background process is 850
    Control socket connect(/root/.ansible/cp/ansible-ssh-10.3.3.16-22-ansible): **Connection refused
    Failed to connect to new control master ", 
        "unreachable": true**
    }
    

    What could be happening? Thank you in advance.


    Centos info
    CentOS Linux release 7.2.1511 (Core) 
    NAME="CentOS Linux"
    VERSION="7 (Core)"
    ID="centos"
    ID_LIKE="rhel fedora"
    VERSION_ID="7"
    PRETTY_NAME="CentOS Linux 7 (Core)"
    ANSI_COLOR="0;31"
    CPE_NAME="cpe:/o:centos:centos:7"
    HOME_URL="https://www.centos.org/"
    BUG_REPORT_URL="https://bugs.centos.org/"
    CENTOS_MANTISBT_PROJECT="CentOS-7"
    CENTOS_MANTISBT_PROJECT_VERSION="7"
    REDHAT_SUPPORT_PRODUCT="centos"
    REDHAT_SUPPORT_PRODUCT_VERSION="7"
    
    CentOS Linux release 7.2.1511 (Core) 
    CentOS Linux release 7.2.1511 (Core) 
    
    ANSIBLE VERSION

    ansible 2.2.1.0

    SSH Config
     #file: ssh_config
    IdentityFile ~/.ssh/id_rsa
    
    Inventory
    [all]
    node1
    
    [all:vars]
    ansible_connection=ssh
    ansible_ssh_user=ansible
    
    Ping with ansible:
    node1 | UNREACHABLE! => {
        "changed": false, 
        "msg": "Failed to connect to the host via ssh: Control socket connect(/root/.ansible/cp/ansible-ssh-10.3.3.16-22-ansible): Connection refused\r\nFailed to connect to new control master\r\n", 
        "unreachable": true
    }
    
    -Verbose
    <p>Loading callback plugin minimal of type stdout, v2.0 from /usr/lib/python2.7/site-packages/ansible/plugins/callback/init.pyc
    Using module file /usr/lib/python2.7/site-packages/ansible/modules/core/system/ping.py
    &lt;10.3.3.16> ESTABLISH SSH CONNECTION FOR USER: ansible
    &lt;10.3.3.16> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ansible -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r 10.3.3.16 '/bin/sh -c '"'"'( umask 77 &amp;&amp; mkdir -p "echo ~/.ansible/tmp/ansible-tmp-1490360816.2-240348019772084" &amp;&amp; echo ansible-tmp-1490360816.2-240348019772084="echo ~/.ansible/tmp/ansible-tmp-1490360816.2-240348019772084" ) &amp;&amp; sleep 0'"'"''
    node1 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: OpenSSH<em>7.4p1, LibreSSL 2.4.4
    debug1: Reading configuration data /root/.ssh/config
    debug1: /root/.ssh/config line 1: Applying options for 
    debug1: Reading configuration data /etc/ssh/ssh</em>config
    debug1: auto-mux: Trying existing master
    debug1: Control socket "/root/.ansible/cp/ansible-ssh-10.3.3.16-22-ansible" does not exist
    debug2: resolving "10.3.3.16" port 22
    debug2: ssh<em>connect</em>direct: needpriv 0
    debug1: Connecting to 10.3.3.16 [10.3.3.16] port 22.
    debug2: fd 3 setting O<em>NONBLOCK
    debug1: fd 3 clearing O</em>NONBLOCK
    debug1: Connection established.
    debug3: timeout: 10000 ms remain after connect
    debug1: permanently<em>set</em>uid: 0/0
    debug1: identity file /root/.ssh/id<em>rsa type 1
    debug1: key</em>load<em>public: No such file or directory
    debug1: identity file /root/.ssh/id</em>rsa-cert type -1
    debug1: Enabling compatibility mode for protocol 2.0
    debug1: Local version string SSH-2.0-OpenSSH<em>7.4
    debug1: Remote protocol version 2.0, remote software version OpenSSH</em>7.3
    debug1: match: OpenSSH<em>7.3 pat OpenSSH compat 0x04000000
    debug2: fd 3 setting O</em>NONBLOCK
    debug1: Authenticating to 10.3.3.16:22 as 'ansible'
    debug3: hostkeys<em>foreach: reading file "/root/.ssh/known</em>hosts"
    debug3: record<em>hostkey: found key type ECDSA in file /root/.ssh/known</em>hosts:1
    debug3: load<em>hostkeys: loaded 1 keys from 10.3.3.16
    debug3: order</em>hostkeyalgs: prefer hostkeyalgs: [email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
    debug3: send packet: type 20
    debug1: SSH2<em>MSG</em>KEXINIT sent
    debug3: receive packet: type 20
    debug1: SSH2<em>MSG</em>KEXINIT received
    debug2: local client KEXINIT proposal
    debug2: KEX algorithms: curve25519-sha256,[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c
    debug2: host key algorithms: [email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,[email protected],[email protected],ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
    debug2: ciphers ctos: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected],aes128-cbc,aes192-cbc,aes256-cbc
    debug2: ciphers stoc: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected],aes128-cbc,aes192-cbc,aes256-cbc
    debug2: MACs ctos: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
    debug2: MACs stoc: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
    debug2: compression ctos: [email protected],zlib,none
    debug2: compression stoc: [email protected],zlib,none
    debug2: languages ctos: 
    debug2: languages stoc: 
    debug2: first<em>kex</em>follows 0 
    debug2: reserved 0 
    debug2: peer server KEXINIT proposal
    debug2: KEX algorithms: [email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1
    debug2: host key algorithms: ssh-rsa,rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519
    debug2: ciphers ctos: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]
    debug2: ciphers stoc: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]
    debug2: MACs ctos: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
    debug2: MACs stoc: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
    debug2: compression ctos: none
    debug2: compression stoc: none
    debug2: languages ctos: 
    debug2: languages stoc: 
    debug2: first<em>kex</em>follows 0 
    debug2: reserved 0 
    debug1: kex: algorithm: [email protected]
    debug1: kex: host key algorithm: ecdsa-sha2-nistp256
    debug1: kex: server->client cipher: [email protected] MAC: compression: none
    debug1: kex: client->server cipher: [email protected] MAC: compression: none
    debug3: send packet: type 30
    debug1: expecting SSH2<em>MSG</em>KEX<em>ECDH</em>REPLY
    debug3: receive packet: type 31
    debug1: Server host key: ecdsa-sha2-nistp256 SHA256:Dha6CJyI4id6qAaSyM0AhG+8ZG6U6yHpm5xf4JAxkms
    debug3: hostkeys<em>foreach: reading file "/root/.ssh/known</em>hosts"
    debug3: record<em>hostkey: found key type ECDSA in file /root/.ssh/known</em>hosts:1
    debug3: load<em>hostkeys: loaded 1 keys from 10.3.3.16
    debug1: Host '10.3.3.16' is known and matches the ECDSA host key.
    debug1: Found key in /root/.ssh/known</em>hosts:1
    debug3: send packet: type 21
    debug2: set<em>newkeys: mode 1
    debug1: rekey after 134217728 blocks
    debug1: SSH2</em>MSG<em>NEWKEYS sent
    debug1: expecting SSH2</em>MSG<em>NEWKEYS
    debug3: receive packet: type 21
    debug1: SSH2</em>MSG<em>NEWKEYS received
    debug2: set</em>newkeys: mode 0
    debug1: rekey after 134217728 blocks
    debug2: key: /root/.ssh/id<em>rsa (0x7f23694372a0)
    debug3: send packet: type 5
    debug3: receive packet: type 7
    debug1: SSH2</em>MSG<em>EXT</em>INFO received
    debug1: kex<em>input</em>ext<em>info: server-sig-algs=<rsa-sha2-256,rsa-sha2-512>
    debug3: receive packet: type 6
    debug2: service</em>accept: ssh-userauth
    debug1: SSH2<em>MSG</em>SERVICE<em>ACCEPT received
    debug3: send packet: type 50
    debug3: receive packet: type 51
    debug1: Authentications that can continue: publickey,password
    debug3: start over, passed a different list publickey,password
    debug3: preferred gssapi-with-mic,gssapi-keyex,hostbased,publickey
    debug3: authmethod</em>lookup publickey
    debug3: remaining preferred: ,gssapi-keyex,hostbased,publickey
    debug3: authmethod<em>is</em>enabled publickey
    debug1: Next authentication method: publickey
    debug1: Offering RSA public key: /root/.ssh/id<em>rsa
    debug3: send</em>pubkey<em>test
    debug3: send packet: type 50
    debug2: we sent a publickey packet, wait for reply
    debug3: receive packet: type 60
    debug1: Server accepts key: pkalg rsa-sha2-512 blen 279
    debug2: input</em>userauth<em>pk</em>ok: fp SHA256:uqPlK4SsqV/skWF1FSJ9VVcZBNQH78bFMd61zO0YqBs
    debug3: sign<em>and</em>send<em>pubkey: RSA SHA256:uqPlK4SsqV/skWF1FSJ9VVcZBNQH78bFMd61zO0YqBs
    debug3: send packet: type 50
    debug3: receive packet: type 52
    debug1: Authentication succeeded (publickey).
    Authenticated to 10.3.3.16 ([10.3.3.16]:22).
    debug1: setting up multiplex master socket
    debug3: muxserver</em>listen: temporary control path /root/.ansible/cp/ansible-ssh-10.3.3.16-22-ansible.WKmgczTyEdVwJpd4
    debug2: fd 4 setting O<em>NONBLOCK
    debug3: fd 4 is O</em>NONBLOCK
    debug3: fd 4 is O<em>NONBLOCK
    debug1: channel 0: new [/root/.ansible/cp/ansible-ssh-10.3.3.16-22-ansible]
    debug3: muxserver</em>listen: mux listener channel 0 fd 4
    debug2: fd 3 setting TCP<em>NODELAY
    debug3: ssh</em>packet<em>set</em>tos: set IP<em>TOS 0x08
    debug1: control</em>persist<em>detach: backgrounding master process
    debug2: control</em>persist_detach: background process is 850
    Control socket connect(/root/.ansible/cp/ansible-ssh-10.3.3.16-22-ansible): Connection refused
    Failed to connect to new control master
    ",
    "unreachable": true
    }</p>
    
    opened by nabidul 17
  • panic: Error 1040: Too many connections

    panic: Error 1040: Too many connections

    panic: Error 1040: Too many connections
    
    goroutine 1406 [running]:
    panic(0xa5e780, 0xc820429ec0)
     /usr/local/Cellar/go/1.6/libexec/src/runtime/panic.go:464 +0x3e6
    github.com/ansible-semaphore/semaphore/routes/tasks.(*task).log.func1(0xc8202ee2c0, 0xc8204100f0, 0x4e, 0xecef61c8e, 0x1a83d7aa, 0x102bd60)
     /Users/m/p/gospace/src/github.com/ansible-semaphore/semaphore/routes/tasks/logging.go:36 +0x26c
    created by github.com/ansible-semaphore/semaphore/routes/tasks.(*task).log
     /Users/m/p/gospace/src/github.com/ansible-semaphore/semaphore/routes/tasks/logging.go:38 +0x640
    2016/06/17 18:30:06 notifying bugsnag: Error 1040: Too many connections
    2016/06/17 18:30:06 bugsnag.Notify: not notifying in development
    
    bug 
    opened by PhilippeLC92 17
  • Version 2.8.31 can't be started

    Version 2.8.31 can't be started

    Hi!

    Looks like release 2.8.31 doesn't want to start with 'semaphore --config /path/to/json':


    [email protected]:~$ /usr/bin/semaphore --config /etc/semaphore.json Ansible Semaphore is a beautiful web UI for Ansible. Source code is available at https://github.com/ansible-semaphore/semaphore. Complete documentation is available at https://ansible-semaphore.com.

    Usage: semaphore [flags] semaphore [command]

    Available Commands: completion generate the autocompletion script for the specified shell help Help about any command migrate Execute migrations service Run Semaphore service setup Perform interactive setup upgrade Upgrade to latest stable version user Manage users version Print the version of Semaphore

    Flags: --config string Configuration file path -h, --help help for semaphore

    Use "semaphore [command] --help" for more information about a command.

    I can't see any doc changes, but did the startup args change since version 2.8.22?

    bug critical 
    opened by ilikejam 16
  • I buils semaphore mysef, but it is useless

    I buils semaphore mysef, but it is useless

    First, when I run semaphore -setup, there is an error:

    `[[email protected] semaphore]# ./cli/semaphore_linux_amd64 -setup Cannot Find configuration! Use -c parameter to point to a JSON file generated by -setup.

    Hint: have you run -setup ?`

    Second, when I run ./cli/semaphore_linux_amd64 -setup -config /tmp/semaphore/semaphore_config.json there is an db error:

    ` "cn": "" }, "telegram_alert": false, "telegram_chat": "", "telegram_token": "" }

    Is this correct? (yes/no): yes Running: mkdir -p /tmp/semaphore.. Configuration written to /tmp/semaphore/semaphore_config.json.. Pinging db..

    Running DB Migrations.. Checking DB migrations Executing migration v0.0.0 (at 2017-08-02 10:46:06.81903805 +0800 CST)... panic: asset: Asset(db/migrations/v0.0.0.sql): Asset db/migrations/v0.0.0.sql can't read by error: Error reading asset db/migrations/v0.0.0.sql at /Users/m/p/semaphore/db/migrations/v0.0.0.sql: open /Users/m/p/semaphore/db/migrations/v0.0.0.sql: no such file or directory

    goroutine 1 [running]: github.com/ansible-semaphore/semaphore/util.MustAsset(0xc4201320e0, 0x18, 0x5, 0xa1a2ce, 0x4) /root/goproj/src/github.com/ansible-semaphore/semaphore/util/bindata.go:4856 +0x12e github.com/ansible-semaphore/semaphore/db.(*DBVersion).GetSQL(0xc420011800, 0xc4201320e0, 0x18, 0x0, 0x2, 0x4a) /root/goproj/src/github.com/ansible-semaphore/semaphore/db/versionHistory.go:51 +0x39 github.com/ansible-semaphore/semaphore/db.(*DBVersion).Run(0xc420011800, 0x0, 0x0) /root/goproj/src/github.com/ansible-semaphore/semaphore/db/migrations.go:44 +0x1bf github.com/ansible-semaphore/semaphore/db.MigrateAll(0xc420127b78, 0x1) /root/goproj/src/github.com/ansible-semaphore/semaphore/db/migrations.go:104 +0x169 main.doSetup(0x2) /root/goproj/semaphore/cli/main.go:122 +0x7b8 main.main() /root/goproj/semaphore/cli/main.go:25 +0x644`

    How to solve these problems?

    opened by jffree 16
  • snap semaphore fails in certain condition

    snap semaphore fails in certain condition

    Playbooks:

    ---
    
    - hosts: all
      connection: local
    
      tasks:
        - name: Include vars from vaulted file.
          ansible.builtin.include_vars:
            file: ./crypted-var.yml
    
        - name: this is a 1rst vault test
          ansible.builtin.debug:
            msg: "this logstash password: {{ logstash_password }}"
    

    ./crypted-var.yml:

    $ANSIBLE_VAULT;1.1;AES256
    35303934343462646664663661613832366264623038333638336165663633333532643532616663
    3964363565353264393762363934343164316337306461650a306139643534323163383335636565
    64323231666563343630323635666665636331373832626436633964326234393130653836656563
    3533383034616664610a646666393738663935666131613935303434666430396336663032366364
    32313261313332383637646366373838363863613237393961343366323630363730363935306265
    64636262626438623735633066386236393331373638366630626531393263336138303439323838
    65653632623736613031663731643032353261666166336639663463386461383065633462346636
    62643766653063386661356631613566343130373637616433323931363931343433316165336135
    3538
    
    

    I've put hte password of vault in my vault key. When starting this I have this error on any node I'm working on :

     3:53:01 PM fatal: [node1]: FAILED! => changed=false
    3:53:01 PM ansible_facts: {}
    3:53:01 PM failed_modules:
    3:53:01 PM ansible.legacy.setup:
    3:53:01 PM ansible_facts:
    3:53:01 PM discovered_interpreter_python: /usr/bin/python3
    3:53:01 PM cmd: /sbin/ip -4 route get 8.8.8.8
    3:53:01 PM failed: true
    3:53:01 PM invocation:
    3:53:01 PM module_args:
    3:53:01 PM fact_path: /etc/ansible/facts.d
    3:53:01 PM filter: []
    3:53:01 PM gather_subset:
    3:53:01 PM - all
    3:53:01 PM gather_timeout: 10
    3:53:01 PM msg: '[Errno 13] Permission denied: b''/sbin/ip'''
    3:53:01 PM rc: 13
    3:53:01 PM stderr: ''
    3:53:01 PM stderr_lines: []
    3:53:01 PM stdout: ''
    3:53:01 PM stdout_lines: []
    3:53:01 PM msg: |-
    3:53:01 PM The following modules failed to execute: ansible.legacy.setup
    3:53:01 PM
    
    

    Is it because I'm using a vault ? it works perfectly in local if I call it like that : ansible-playbook -e @./crypted-var.yml --vault-password-file ./afilewithpassword ./vault-test.yml

    I think this should work properly as it is very convenient to be able to have multiple password in a vault file.

    I'm working on the latest release on snap installed on Ubuntu 22.04.

    opened by french-kiwy 2
  • Bug: Environment variables are not used as expected

    Bug: Environment variables are not used as expected

    Affected component: Environment

    After migration/upgrade from previous Semaphore version to version v2.8.74, the Environment variables appeared in the top box Extra variables and everything worked fine after the upgrade. What was a bit surprising, that the original variables appeared as extra, as I would expect that they would be normal, but OK.

    The major issue is if i move some/all Environment variables from the Extra variables to the bottom box Environment variables, they are saved to the DB, but when running playbook, they (those from the bottom Environment variables box) are not used. Expected behavior: The Extra variables (in the top box) would override the normal Environment variables and would be used in playbook.

    Furthermore, when I move the variables back to the top Extra variables box, while leaving the bottom one empty, the validation starts complaining: Environment variables must be valid JSON. I tried further, and this validation issue is also for the top box, when left empty. (From the code it looks same validation issue affects both boxes.) Expected behavior: Empty box would pass the validation and would have a same affect as explicit {}, which is currently a workaround, see below.

    image

    opened by fivaldi 0
  • Task will failed when task delegate_to localhost with sudo

    Task will failed when task delegate_to localhost with sudo

    Environment: Semaphore v2.8.53 , running in k8s.

    I try to run such task like this:

    ---
    - name: docker clean
      hosts: all
      user: automation
      become: true
      gather_facts: false
    
      tasks:
        - name: wait 30 seconds and then continue
           wait_for:   # I konw use pause task by the way, I mean all tasks in this case will fail, for example uri 
               timeout: 30
           delegate_to: localhost
        ...
    

    The output will show:

    [master]: FAILED! => {"msg": "privilege output closed while waiting for password prompt:\n/bin/sh: sudo: not found\n"}
    

    The reason is there is no sudo command in Semaphore docker image.


    So I build my own docker image: Dockfile:

    FROM semaphoreui/semaphore:v2.8.53
    
    USER 0
    RUN apk add --no-cache sudo
    
    USER 1001
    ENTRYPOINT ["/sbin/tini", "--"]
    CMD ["/usr/local/bin/semaphore-wrapper", "/usr/local/bin/semaphore", "server", "--config", "/etc/semaphore/config.json"]
    

    The output will show:

    fatal: [worker2]: FAILED! => {"changed": false, "module_stderr": "Sorry, try again.\n[sudo via ansible, key=byztqlhrjqaevwknheczcocehvqykrir] password:\nsudo: no password was provided\nsudo: 1 incorrect password attempt\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}
    

    I think the reason is there is no localhost in the Semaphore Inventory File and I don't provide sudo password.


    So I let semaphore run as root, the issue is solved. Dockfile:

    FROM semaphoreui/semaphore:v2.8.53
    
    USER 0
    RUN apk add --no-cache sudo
    
    ENTRYPOINT ["/sbin/tini", "--"]
    CMD ["/usr/local/bin/semaphore-wrapper", "/usr/local/bin/semaphore", "server", "--config", "/etc/semaphore/config.json"]
    

    I know it is not best practices, What should I do?

    opened by DesireWithin 0
  • Feature: Re-run build with the original Environment variables

    Feature: Re-run build with the original Environment variables

    Expected behavior: Re-running a build should re-use the Environment variables used when the build's version started to exist / appeared for the first time.

    TL;DR

    If I run a 1.0.0 Build (let's say with some variable in Environment {"somevar": "originalvalue"}), then I modify the environment with {"somevar": "NEWVALUE"} and run a new (fresh) 2.0.0 Build, then this build will obviously use the new value (NEWVALUE). But, if I click to re-run 1.0.0 build again, I would expect it to use the original values (originalvalue). Actual behavior: Semaphore uses the currently set value (NEWVALUE).

    Version tested/used: v2.8.74

    Advanced: Environments used for versioned Builds would be stored with that particular semver. This would be used to pick the right Environment depending on semver by version comparison. E.g.: I perform build for 2.0.0, then modify env, then build 3.0.0, then build 2.0.1. Expected result: The "2.0.1" build would re-use 2.0.0's environment, not the modified one. A tricky part would be editing of these versioned/tagged Environments.

    opened by fivaldi 0
  • Feature: Rocket.Chat notifications

    Feature: Rocket.Chat notifications

    Hi, can you add notification support to Rocket.Chat?

    Ansible doc: https://docs.ansible.com/ansible/latest/collections/community/general/rocketchat_module.html

    curl example:

    curl -vX POST --header "Content-Type: application/json" --data @"$JSON_FILE" https://rocketchat.example.com/hooks/$ROCKETCHAT_TOKEN
    

    JSON_FILE:

    {
      "username": "BOT_USERNAME",
      "channel": "#ROCKETCHAT_CHANNEL",
      "text": "some text"
    }
    

    ROCKETCHAT_TOKEN: qqqqqqqqqqqqqqqwwwwwwwwwwwwwweeeeeeeeeeeeee

    enhancement proof of concept 
    opened by don-rumata 0
Releases(v2.8.77)
listmonk is a standalone high performance, self-hosted newsletter and mailing list manager with a modern dashboard. Single binary app.

listmonk is a standalone, self-hosted, newsletter and mailing list manager. It is fast, feature-rich, and packed into a single binary. It uses a PostgreSQL database as its data store.

Kailash Nadh 8.9k Nov 28, 2022
Store files in Telegram messages for free and access them from a modern Web UI

Telegram Storage Store files in Telegram messages for free and access them in a nice web UI. Telegram allows to store files (of max 2GB each) for a un

Jack 28 Nov 8, 2022
Tsdev (Zero Config Modern Typescript Projects)

Tsdev (Zero Config Modern Typescript Projects) Motivation I really like the idea behind https://github.com/jaredpalmer/tsdx but I find it uses older t

Rahul Tarak 6 Jun 29, 2022
Go library for Parsing Ansible inventory files

aini Go library for Parsing Ansible inventory files. We are trying to follow the logic of Ansible parser as close as possible. Documentation on ansibl

Relex 80 Nov 15, 2022
Configuration management tool inspired by Ansible, but with no yaml - just Go

GOSSH This repo is an experiement with creating a declarative IT automation and configuration management package for Golang. Think Ansible, but no Yam

Kristoffer Lorentsen 26 Oct 31, 2022
sail is an operation framework based on Ansible/Helm. sail follows the principles of Infrastructure as Code (IaC), Operation as Code (OaC), and Everything as Code. So it is a tool for DevOps.

sail 中文文档 sail is an operation framework based on Ansible/Helm. sail follows the principles of Infrastructure as Code (IaC), Operation as Code (OaC),a

Bougou Nisou 10 Dec 16, 2021
Ansible-driven CI/CD and monitoring system

Ansible Semaphore Follow Semaphore on Twitter (AnsibleSem) and StackShare (ansible-semaphore). Ansible Semaphore is a modern UI for Ansible. It lets y

Ansiphore 0 Sep 11, 2022
Go-Guardian is a golang library that provides a simple, clean, and idiomatic way to create powerful modern API and web authentication.

❗ Cache package has been moved to libcache repository Go-Guardian Go-Guardian is a golang library that provides a simple, clean, and idiomatic way to

Sanad Haj Yahya 418 Nov 20, 2022
Modern Make

Modern Make About Mmake is a small program which wraps make to provide additional functionality, such as user-friendly help output, remote includes, a

TJ Holowaychuk 1.6k Nov 26, 2022
Concurrent task runner, developer's routine tasks automation toolkit. Simple modern alternative to GNU Make 🧰

taskctl - concurrent task runner, developer's routine tasks automation toolkit Simple modern alternative to GNU Make. taskctl is concurrent task runne

null 229 Nov 26, 2022
A Commander for modern Go CLI interactions

Cobra is both a library for creating powerful modern CLI applications as well as a program to generate applications and command files. Cobra is used i

Steve Francia 29.6k Nov 19, 2022
✨ #PTerm is a modern go module to beautify console output. Featuring charts, progressbars, tables, trees, and many more 🚀 It's completely configurable and 100% cross-platform compatible.

?? PTerm | Pretty Terminal Printer A golang module to print pretty text Show Demo Code PTerm.sh | Installation | Documentation | Quick Start | Example

null 3.1k Nov 25, 2022
Write your SQL queries in raw files with all benefits of modern IDEs, use them in an easy way inside your application with all the profit of compile time constants

About qry is a general purpose library for storing your raw database queries in .sql files with all benefits of modern IDEs, instead of strings and co

Sergey Treinis 25 Nov 5, 2022
A modern and intuitive terminal-based text editor

micro is a terminal-based text editor that aims to be easy to use and intuitive, while also taking advantage of the capabilities of modern terminals.

Zachary Yedidia 20.7k Nov 28, 2022
Build cross-platform modern desktop apps in Go + HTML5

Lorca A very small library to build modern HTML5 desktop apps in Go. It uses Chrome browser as a UI layer. Unlike Electron it doesn't bundle Chrome in

Serge Zaitsev 7.5k Nov 24, 2022
Golang bindings of Sciter: the Embeddable HTML/CSS/script engine for modern UI development

Go bindings for Sciter Check this page for other language bindings (Delphi / D / Go / .NET / Python / Rust). Attention The ownership of project is tra

Terra Informatica Software, Inc 2.5k Nov 18, 2022
Project Flogo is an open source ecosystem of opinionated event-driven capabilities to simplify building efficient & modern serverless functions, microservices & edge apps.

Project Flogo is an Open Source ecosystem for event-driven apps Ecosystem | Core | Flows | Streams | Flogo Rules | Go Developers | When to use Flogo |

TIBCO Software Inc. 2.1k Nov 22, 2022
Modern Go Application example

Modern Go Application Go application boilerplate and example applying modern practices This repository tries to collect the best practices of applicat

Márk Sági-Kazár 1.4k Nov 20, 2022
:rocket: Modern cross-platform HTTP load-testing tool written in Go

English | 中文 Cassowary is a modern HTTP/S, intuitive & cross-platform load testing tool built in Go for developers, testers and sysadmins. Cassowary d

Roger Welin 634 Nov 19, 2022
Modern Job Scheduler

Kala Kala is a simplistic, modern, and performant job scheduler written in Go. Features: Single binary No dependencies JSON over HTTP API Job Stats Co

AJ Bahnken 1.9k Nov 27, 2022