summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess2014-05-01 10:49:52 -0300
committerJoey Hess2014-05-01 10:49:52 -0300
commit6088df9105a10ef446cc236982c2e30857182a84 (patch)
treea407345854637915fca54e61a68819731b375e05
parentf058e47574603fffffc3f60305bc874b78f7770f (diff)
parent2bc9a2a7379f80595f5b8f3dc5475f64d5537cfc (diff)
Merge branch 'joeyconfig'
-rw-r--r--Propellor/Property/Git.hs4
-rw-r--r--Propellor/Property/SiteSpecific/JoeySites.hs7
-rw-r--r--Propellor/SimpleSh.hs9
-rw-r--r--config-joey.hs7
-rw-r--r--doc/todo/docker_todo_list.mdwn3
-rw-r--r--propellor.hs2
6 files changed, 30 insertions, 2 deletions
diff --git a/Propellor/Property/Git.hs b/Propellor/Property/Git.hs
index ba370e51..e5df7e48 100644
--- a/Propellor/Property/Git.hs
+++ b/Propellor/Property/Git.hs
@@ -86,4 +86,8 @@ cloned owner url dir mbranch = check originurl (property desc checkout)
[ Just $ "git clone " ++ shellEscape url ++ " " ++ shellEscape dir ++ " < /dev/null"
, Just $ "cd " ++ shellEscape dir
, ("git checkout " ++) <$> mbranch
+ -- In case this repo is exposted via the web,
+ -- although the hook to do this ongoing is not
+ -- installed here.
+ , Just "git update-server-info"
]
diff --git a/Propellor/Property/SiteSpecific/JoeySites.hs b/Propellor/Property/SiteSpecific/JoeySites.hs
index 06865c45..bdc60a5b 100644
--- a/Propellor/Property/SiteSpecific/JoeySites.hs
+++ b/Propellor/Property/SiteSpecific/JoeySites.hs
@@ -15,6 +15,7 @@ import qualified Propellor.Property.User as User
import qualified Propellor.Property.Obnam as Obnam
import qualified Propellor.Property.Apache as Apache
import Utility.SafeCommand
+import Utility.FileMode
import Data.List
import System.Posix.Files
@@ -183,10 +184,16 @@ annexWebSite :: [Host] -> Git.RepoUrl -> HostName -> AnnexUUID -> [(String, Git.
annexWebSite hosts origin hn uuid remotes = propertyList (hn ++" website using git-annex")
[ Git.cloned "joey" origin dir Nothing
`onChange` setup
+ , postupdatehook `File.hasContent`
+ [ "#!/bin/sh"
+ , "exec git update-server-info"
+ ] `onChange`
+ (postupdatehook `File.mode` (combineModes (ownerWriteMode:readModes ++ executeModes)))
, setupapache
]
where
dir = "/srv/web/" ++ hn
+ postupdatehook = dir </> ".git/hooks/post-update"
setup = userScriptProperty "joey" setupscript
`requires` Ssh.keyImported SshRsa "joey"
`requires` Ssh.knownHost hosts "turtle.kitenet.net" "joey"
diff --git a/Propellor/SimpleSh.hs b/Propellor/SimpleSh.hs
index c088eda7..73ff41ae 100644
--- a/Propellor/SimpleSh.hs
+++ b/Propellor/SimpleSh.hs
@@ -70,13 +70,17 @@ simpleSh namedpipe = do
simpleShClient :: FilePath -> String -> [String] -> ([Resp] -> IO a) -> IO a
simpleShClient namedpipe cmd params handler = do
+ debug ["simplesh connecting"]
s <- socket AF_UNIX Stream defaultProtocol
connect s (SockAddrUnix namedpipe)
h <- socketToHandle s ReadWriteMode
hPutStrLn h $ show $ Cmd cmd params
hFlush h
+ debug ["simplesh sent command"]
resps <- catMaybes . map readish . lines <$> hGetContents h
- hClose h `after` handler resps
+ v <- hClose h `after` handler resps
+ debug ["simplesh processed response"]
+ return v
simpleShClientRetry :: Int -> FilePath -> String -> [String] -> ([Resp] -> IO a) -> IO a
simpleShClientRetry retries namedpipe cmd params handler = go retries
@@ -88,7 +92,8 @@ simpleShClientRetry retries namedpipe cmd params handler = go retries
v <- tryIO run
case v of
Right r -> return r
- Left _ -> do
+ Left e -> do
+ debug ["simplesh connection retry", show e]
threadDelaySeconds (Seconds 1)
go (n - 1)
diff --git a/config-joey.hs b/config-joey.hs
index 254e810a..a35f77bd 100644
--- a/config-joey.hs
+++ b/config-joey.hs
@@ -1,4 +1,5 @@
-- This is the live config file used by propellor's author.
+module Main where
import Propellor
import Propellor.CmdLine
@@ -19,6 +20,7 @@ import qualified Propellor.Property.Docker as Docker
import qualified Propellor.Property.Git as Git
import qualified Propellor.Property.Apache as Apache
import qualified Propellor.Property.Postfix as Postfix
+import qualified Propellor.Property.Service as Service
import qualified Propellor.Property.SiteSpecific.GitHome as GitHome
import qualified Propellor.Property.SiteSpecific.GitAnnexBuilder as GitAnnexBuilder
import qualified Propellor.Property.SiteSpecific.JoeySites as JoeySites
@@ -73,6 +75,11 @@ hosts = -- (o) `
& Docker.garbageCollected `period` Daily
& Apt.installed ["git-annex", "mtr", "screen"]
+
+ -- Nothing is using https on clam, so listen on that port
+ -- for ssh, for traveling on bad networks.
+ & "/etc/ssh/sshd_config" `File.containsLine` "Port 443"
+ `onChange` Service.restarted "ssh"
-- Orca is the main git-annex build box.
, standardSystem "orca.kitenet.net" Unstable "amd64"
diff --git a/doc/todo/docker_todo_list.mdwn b/doc/todo/docker_todo_list.mdwn
index 65762cff..2f215a50 100644
--- a/doc/todo/docker_todo_list.mdwn
+++ b/doc/todo/docker_todo_list.mdwn
@@ -6,3 +6,6 @@
need ntp installed for a good date source.
* Docking a container in a host should add to the host any cnames that
are assigned to the container.
+* It seems that provisionContainer sometimes hangs when the container
+ is already running. This seems likely to be a problem with the simpleSh
+ socket hack.
diff --git a/propellor.hs b/propellor.hs
index c7727751..2478450f 100644
--- a/propellor.hs
+++ b/propellor.hs
@@ -12,6 +12,8 @@
-- The source is either copied from /usr/src/propellor, or is cloned from
-- git over the network.
+module Main where
+
import Utility.UserInfo
import Utility.Monad
import Utility.Process